gpt4 book ai didi

c++ - 使用非默认比较谓词的集合容器

转载 作者:行者123 更新时间:2023-11-30 02:37:27 24 4
gpt4 key购买 nike

我想创建一个 std::map<T1, std::set<T2> > set在哪里使用非默认比较器。例如,如果我声明 set就其本身而言,我会将其声明为:

std::set<int,bool(*)(int,int)> s (fn_pt);

哪里fn_pt是一个函数指针。在我的示例中,当我向 std::map 添加新 key 时,我希望用那个非默认比较器构造集合。这样的事情可能吗?

更复杂的是,我的编译器不支持C++11,所以我只能接受不需要C++11的解决方案;但是,如果有一种 C++11 方法可以做到这一点,我也有兴趣看到它。

最佳答案

既然你可以使用仿函数那么你应该能够使用:

struct Compare
{
bool operator () (int lhs, int rhs) { return lhs - 10 < rhs; }
};


int main()
{
std::map<int, std::set<int, Compare> > data;
}

在 map 中创建的每个新集都将默认使用模板参数中指定的类型构建。

关于c++ - 使用非默认比较谓词的集合容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31567710/

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