私はマルチセットを使用しており(セットは同じです)、それらを一連の関数の引数として使用しています。私の関数は次のようになりました。
void insert(const int val, multiset<int>& low, multiset<int>& high)
次に、マルチセットの1つにカスタム比較関数が必要であることがわかりました。私はそれを宣言しstruct
、()演算子をオーバーライドしました。
かつての私の多重集合の定義:multiset<int> low
今はmultiset<int, order> low
です。
これに伴う問題は、実際にのタイプlow
を変更しているため、すべてのパラメーターでタイプを変更する必要があることです。これにより、関数の一般性が大幅に低下します(関数はマルチセットの比較方法を知る必要がありません)。 。
さらに、order
これは1つの比較関数であり、これまでに宣言した他の比較関数とは異なります(比較する型はまったく同じですが)。私が言いたいのはmultiset<int, order1> != multiset<int, order2>
、それは非常に悪いことです。
だから、私の質問は、どうすればこの問題を抱えることができないのですか?比較関数に関係なく、マルチセット(またはセット)を受け入れる関数を宣言するにはどうすればよいですか?