C++ で次のように定義された名前クラスがあります。
class name{
public:
int range;
int num;
char type;
string n;
};
に基づく名前を含む配列をアルファベット順に並べ替えるにはどうすればよいstring n
ですか?
C++ で次のように定義された名前クラスがあります。
class name{
public:
int range;
int num;
char type;
string n;
};
に基づく名前を含む配列をアルファベット順に並べ替えるにはどうすればよいstring n
ですか?
std::sort
オプションで、関数、ラムダ、または呼び出し可能な他の何かである述語を取ります。ここでは単純な関数を書くだけですbool orderByName(name const& A, name const& B)
。
1 つの方法は、(同じ型の) 別のオブジェクトの とoperator<
比較するためにオーバーロードすることです。aがその変数によって識別され、その順序付けが定義されている場合、これが適切な解決策になる可能性があります。n
n
name
n
n
並べ替えについては、アルゴリズム ライブラリにこれを行うための関数があります。
オーバーロードは次のようになります。
bool operator<(const name &o) const {
return n < o.n;
}
他の 5 つの比較演算子を定義することもお勧めします。<
平等は簡単で、残りはとで定義できます。==
bool operator==(const name &o) const {
return n == o.n;
}