::ソートあなたはそれがリストをソートする方法の基礎となる第三引数を供給することができます。最初の引数が最初に来るようにするには、trueを返します。 2番目の引数が最初に来るようにするには、falseを返します。引数が等しいときにstd :: sort compare関数がfalseを返す必要があるのはなぜですか? STDでは
if arg1 == arg2, compare function MUST return false.
私が持っているいくつかの用語がありました:私は私の述語関数は、おそらく「無効コンパレータ」であり、私はそれが次の要件を満たしていないという事実にそれを絞られている問題に遭遇してきましたstd :: sortには厳密な弱い順序が必要であると見なされます。 2つの場所を除いて、私がこれらのトピックについて得た他のすべてのページは、技術的な論文のようです。理解できません。
In weak ordering some elements "may be tied" with each other.
しかし、私にはこれがある、また、「部分的に順序集合」の意味である:私はそれを理解できることはつまりさらに
"there may be pairs of elements for which neither element precedes the other"
、私は何を理解することはできません「厳密」とは、どちらかに含意します。
注文理論の用語について私の混乱を除いて、私の質問は、compare関数の引数1と引数2が等しい場合、その場合、どちらが先に来るか気にしない私は幸せです)、なぜ議論1が最初に来るように私は真実に戻りませんか?
私はまた私のプログラムは、実際には無効なコンパレータです知っているが、その後、私はそれはおそらくちょうど比較関数がtrueを返した場合ARG1とARG2が等しいかどうかをチェックしますと思った方法を尋ねるつもりでした。
コンパレータが厳密な弱い秩序の要件を満たしていることを確認するチェックはないので注意してください。 – Rakete1111
@ Rakete1111:それはどういう意味ですか?実装では、そのようなチェックを自由に行うことができます。実際には、実際に実装されているものもあります。 – AnT
私のためにVisual Studioで "無効なコンパレータ"と言う例外がスローされます。私はそれが明示的にチェックするか、ソートアルゴリズムの何かがうまくいかず、それをスローすると仮定しました。 – Zebrafish