我想将指针映射到整数以用于序列化.指针可以是不同类型的,并且可以指向可能使用多重继承的多态对象.我需要查询地图以了解指针是否存储在其中,如果存在,那么相关的整数值是什么.
这样做的正确方法是什么?
map<void*, int>我想到的简单方法不起作用,因为operator <没有为任意指针定义.或者这在普通系统上不是问题吗?
另一个解决方案是拥有一个vector<void*>.但是这需要遍历存储在其中的所有指针,并且我不确定转换void *是否不会operator ==使用继承来破坏for对象.
您最初的使用想法很幸运map<void*, int>.
虽然你operator<没有为指针定义你是正确的,但std::map<>is std::less<>和C++标准使用的谓词std::less<T*>也适用于任意指针.
引用C++标准来支持这个([lib.comparisons]/8):
对于模板
greater,less,greater_equal,和less_equal,对于任何指针类型的专业化产生总订单,即使内置的运营商<,>,<=,>=没有.
| 归档时间: |
|
| 查看次数: |
658 次 |
| 最近记录: |