この質問で私はC++の基本を理解しようとしています。 thisのような、カスタムクラスのベクトル/リストのソートの問題に対する多くの良い答えがあります。すべての例で、ソートに渡されるコンパレータ関数のシグネチャは次のようになります。カスタムクラスのオブジェクトへのポインタを管理するベクトルをソートするコンパレータ
(const ClassType& obj1, const ClassType& obj2)
このシグネチャはコンパレータ機能に必須ですか?あるいは、次のようなものを与えることもできます:
(ClassType obj1, ClassType obj2)
私はそれに応じてコンパレータのボディを修正すると仮定します。
最初の署名が必須の場合、その理由は何ですか? constとの参照 '&'を使用する理由を理解したい。 私が考えることはconstです。これは、コンパレータ機能が要素を変更できないようにするためです。また、複数のコピーが作成されないようにするためのリファレンスです。
カスタムクラスのオブジェクトへのポインタを含むベクトルをソートするにはどうすればよいですか? (1)または(2)のように(または下記参照)、あるいは両方がうまくいくでしょうか?ソートする vertorはVector型の
である(1)
(const ClassType*& ptr1, const ClassType*& ptr2)
(2)
(ClassType* ptr1, ClassType* ptr2)
私はあなたがポインタを比較したいとは思わない?あなたは?配列にオブジェクトへのポインタが含まれていても、おそらくオブジェクトの実際のインスタンスを比較したいと思うでしょうか? –
_ "私はC++の基本を理解しようとしています。私はC++を非常に新しくしています。" –