这个问题一定有一个简单的答案......
我有一个 std::set 或一个 std::map 或一些具有自然排序的对象类型 - 比如 std::less。
我需要更改我的集合或映射以包含共享指针而不是 T 的拷贝。
所以我想要这样的东西:
using my_set std::set<std::shared_ptr<T>, std::less<*T>>;
但是对于如何指定“在 T 的 ____ 适配器上使用 less 适配器,以便它在取消引用的成员上,而不是在共享指针上!”,我还是一片空白。
有没有std::less<std::dereference<std::shared_ptr<T>>>
等价?
最佳答案
目前 C++ 标准库中没有仿函数可以实现您想要的功能。您可以编写自定义比较器,或者如果您经常需要此功能,请提供一个间接
/取消引用
函数对象。
相关且可能有帮助的主题;第一个为许多运算符(operator)提供了通用解决方案(即使它需要一些代码):
关于c++ - 如何简单地调整指针的集合或映射排序谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39960165/