我正在使用多重集(集是相同的),并将它们作为一堆函数的参数。我的函数如下所示:
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>
,这非常糟糕。
所以,我的问题是,我怎么能没有这个问题?如何声明接受多重集(或集)的函数,而不管它们的比较函数如何?