高效的指向C++中的整数映射和查找的指针

Jur*_*aho 2 c++ pointers map

我想将指针映射到整数以用于序列化.指针可以是不同类型的,并且可以指向可能使用多重继承的多态对象.我需要查询地图以了解指针是否存储在其中,如果存在,那么相关的整数值是什么.

这样做的正确方法是什么?

map<void*, int>我想到的简单方法不起作用,因为operator <没有为任意指针定义.或者这在普通系统上不是问题吗?

另一个解决方案是拥有一个vector<void*>.但是这需要遍历存储在其中的所有指针,并且我不确定转换void *是否不会operator ==使用继承来破坏for对象.

Bar*_*nau 6

您最初的使用想法很幸运map<void*, int>.
虽然你operator<没有为指针定义你是正确的,但std::map<>is std::less<>和C++标准使用的谓词std::less<T*>也适用于任意指针.

引用C++标准来支持这个([lib.comparisons]/8):

对于模板greater,less,greater_equal,和less_equal,对于任何指针类型的专业化产生总订单,即使内置的运营商<,>,<=,>=没有.