2013-11-28 6 views
5

私はクラスはclass stuff{ int id; int ammount; int quality; /*...*/ };と言っていますが、私はvector<stuff> itemsです。私のコレクションは、stuff::idでソートし、staff::idで検索可能にしたいと考えています。私はfind_ifと並べ替えを使用していくつかの並べ替えの特別なラムダベースの関数を使用してそれを行うことができます。しかし、私はベクトルでそれをすべてデフォルトで持っていたい。私はハッシング関数を作成する方法があると聞いていましたが、それを見つけることができなかったので、デフォルトのベクトル関数を使ってクラス内でソート可能/検索可能にする方法を教えてください。ソートにクラス内のソート可能なクラスを作る方法は?

+0

'this-> id

+1

'std :: map 'を代わりに使用できますか? – Nawaz

+0

ここでのポイントは、私のクラスを 'map'' pair :: first'としても使えるようにすることです。これは、私のビジネスロジックで定義されたクラスによってすべての基本コンテナを検索することです。文字列。 – DuckQueen

答えて

6

、二つの構造を比較してoperator<実装:

bool operator<(const stuff& s1, const stuff& s2) 
{ 
    // Your comparison here 
} 

これは、すべてのソートのほとんどのためにデフォルトで使用される演算子です。

同等性チェックの場合は、同様にoperator==を作成してください。

関連する問題