【发布时间】:2016-10-10 14:04:56
【问题描述】:
这个问题肯定有一个简单的答案...
我有一个 std::set 或一个 std::map 或一些具有自然排序的对象类型 - 比如 std::less。
我需要更改我的集合或地图以包含 shared_ptr 而不是 T 的副本。
所以我想要类似的东西:
using my_set std::set<std::shared_ptr<T>, std::less<*T>>;
但是对于如何指定“在 T 的 ____ 适配器上使用 less 适配器,以便它在取消引用的成员上,而不是在 shared_ptrs 上!”,我画了一个空白!
是否有 std::less<std::dereference<std::shared_ptr<T>>> 等效项?
【问题讨论】:
-
写一个自定义比较器?
-
绝对可以做到。我的问题是:没有标准的适配器吗?一定要涨一吨!
-
不确定,因为比较函数必须采用指针类型
T。像std::less<std::dereference<std::shared_ptr<T>>>这样的东西会期望T。 -
标准库中没有任何东西可以现成使用。您需要编写自己的比较器。
标签: c++ set std shared-ptr