【发布时间】:2018-12-26 04:55:07
【问题描述】:
我想将一些指针存储到 std::set 中,但标准指南说它无效。
如果相同类型的两个指针 p 和 q 指向不同的对象,这些对象 > 不是同一对象的成员或同一数组的元素或不同的 > 函数,或者如果其中只有一个为空,则结果pq、p p>=q 未指定。
朴素指针类型似乎不支持 运算符,如下所示。
Object * a = new Object;
Object * b = new Object;
a == b; // valid
a < b; //invalid
Object * arr = new Object[10];
&arr[3] == &arr[4]; // valid
&arr[3] < &arr[4]; // valid
如何将指针放入 std::set 或 std::map 的键?我应该定义一些支持比较的包装器
编辑 1
Some other questions 说,即使 C++ 指针不直接支持 , std::less 也适用于纯指针(没有任何额外信息)。但我找不到任何参考。
【问题讨论】:
-
我所期望的只是指针的唯一容器,所以比较原始地址对我来说就足够了。我知道我可以使用 std::unordered_map ,但无论如何我应该在这种情况下添加哈希函数
-
是的。我认为下面的答案解决了我的问题
标签: c++