我正在使用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>
,這是非常糟糕的。
所以,我的問題是,我怎麼能沒有這個問題?我如何聲明接受多集(或集)的函數,而不考慮它們的比較函數?