我正在使用multisets(集合将是相同的),并将它们作为一组函数的参数。我的功能看起来像这样:设置自定义比较类型
void insert(const int val, multiset<int>& low, multiset<int>& high)
然后我发现我需要一个自定义比较函数的其中一个multisets。我做了它声明struct
并重写()运算符。
我多集的定义,一旦是:multiset<int> low
现在multiset<int, order> low
。
问题是我实际上改变了low
的类型,因此我需要在每一个参数中改变它,这大大降低了我函数的一般性(函数不需要知道比较多重集的方法)。
此外,order
是一个比较函数,它与我可能声明的任何其他比较函数不同(即使它比较的类型完全相同)。 我的意思是multiset<int, order1> != multiset<int, order2>
,这是非常糟糕的。
所以,我的问题是,我怎么能没有这个问题?我如何声明接受多集(或集)的函数,而不考虑它们的比较函数?