gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 00:04:44 26 4
gpt4 key购买 nike

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

正确的做法是什么?

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

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

最佳答案

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

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

For templates greater, less, greater_equal, and less_equal, the specializations for any pointer type yield a total order, even if the built-in operators <, >, <=, >= do not.

关于c++ - C++ 中指向整数映射和查找的高效指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com