gpt4 book ai didi

c++ - 设置自定义比较类型

转载 作者:搜寻专家 更新时间:2023-10-31 01:50:27 24 4
gpt4 key购买 nike

我正在使用多重集(集合是一样的),并将它们作为一组函数的参数。我的函数如下所示:

void insert(const int val, multiset<int>& low, multiset<int>& high)

然后我发现我需要一个多重集的自定义比较函数。我这样做是为了声明 struct并覆盖 () 运算符。

我的多重集定义曾经是:multiset<int> low现在是 multiset<int, order> low .

问题在于我实际上是在更改 low 的类型,因此我需要在每个参数中更改它,这大大降低了我的函数的通用性(函数不需要知道多重集的比较方法)。

此外,order是一个比较函数,它不同于我可能声明的任何其他比较函数(即使它比较的类型完全相同)。我的意思是multiset<int, order1> != multiset<int, order2> ,这非常糟糕。

所以,我的问题是,我怎么能没有这个问题呢?我如何声明接受多重集(或集合)的函数而不考虑它们的比较函数?

最佳答案

你可以使用函数模板:

template <typename M1, typename M2>
void insert(const int val, M1& low, M2& high);

另一种选择,如果您想限制自己使用 std::multiset<int, X> , 就是使用template模板参数。

关于c++ - 设置自定义比较类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15120083/

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