2017-01-30 5 views
0

メンバ変数nameを含むPersonオブジェクトの配列があります。文字列:: compareを使用してオブジェクトの文字列を比較するオーバーロードされた比較演算子を使用してアルファベット順に並べ替えることを試みています。オブジェクトへのポインタの配列をメンバ変数でアルファベット順にソート

bool Person::operator==(Person p) { 
    if (name.compare(p.name) == 0) { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

これは動作し、私に正しい結果を与えますが、私はアルファベット順に配列に名前を注文するためにこれを使用する方法を知りません。

私は周りを見回したと文字列の上にそのドキュメントを見てきました::比較彼らは同じ

  • < 0のどちらかの値を比較する比較文字列と比較する文字列
    • 0の間

      関係は述べています一致しない最初の文字が比較文字列内でより低いか、比較されたすべての文字は一致しますが、比較文字列>はより短くなります。

    • > 0一致しない最初の文字の値が比較文字列の>よ​​り大きいか、すべての比較文字が一致しますが比較文字列がより長いです。

    私はこの情報で私の問題を解決する方法を考え出すことはできません。

    私は何をしようとしているのか、それとも良い方法があるのでしょうか?

  • +2

    あなたのタイトルに* * *のところに記載されている*ポインタ*が表示されません。カスタムコンパレータ( 'std :: sort'を使用する場合は' operator <')を使用しているソートルーチン(' std :: sort'など)への呼び出しもありません。要するに、私は[最小限の、完全な、検証可能な例](https://stackoverflow.com/help/mcve)は見ません。 – WhozCraig

    +0

    標準ライブラリでは、[テンプレート<クラスRandomIt、クラス比較> void sort(RandomIt first、RandomIt last、Compare comp);](http://en.cppreference.com/w/cpp/algorithm/sort )。 –

    答えて

    2

    あなたのオペレータは正しく定義されていますが、あなたが探しているオペレータではありません。演算子<を定義し、std :: sortを使用したいとします。

    +0

    だから、私はbool Person :: operator <(Person p){if(name.compare(p.name)<0){trueを返します。 }}? –

    +0

    @luke_k 'bool Person :: operator <(const Person&p)const {戻り値 WhozCraig

    関連する問題