2011-10-17 12 views
0

私はRecipes.hという名前の構造体とvector<Recipes> recipesという名前のベクトルを持っています。このベクトルには、各要素に1つのintと2つの文字列(文字列シェフ名と命令という文字列)が含まれています。しかし、私は文字列chef_nameだけでベクトル全体をソートしたい。私はこのようなことをやろうとしましたC++ Sortクラスの型ベクトル

sort(recipes.begin(),recipes.end(),compare); 
bool Menu::compare(const recipes* lhs, const recipes* rhs) 

しかし、レシピはタイプ名ではありません。このベクトルをソートするにはどうすればいいですか?

+3

さらに詳しいコードを示し、適切な用語を使用してください。あなたの 'struct'が' Recipes.h'と呼ばれず、あなたの 'vector'が' vector recipes'と呼ばれていないことは確かです。 –

+0

あなたのクラス定義とあなたの使用法を含め、完全で最小限のコードを投稿してください。 –

+0

'compare'の完全な名前は' Menu :: compare'です... – jopasserat

答えて

3

あなたが投稿した非常に短いコードから、最初にrecipesをオブジェクトとして使用し、次にタイプとして使用することがわかります。あなたの比較関数はおそらくパラメータとしてRecipes > const&としたいでしょう。操作がMenuクラスに依存しない場合は、この関数をstaticメンバ関数として宣言することをお勧めします。

関数のシグネチャは次のようになります。

static bool Menu::compare(const Recipes& lhs, const Recipes& rhs) 

し、このようにそれを使用します。

sort(recipes.begin(),recipes.end(),compare); ...or... 
sort(recipes.begin(),recipes.end(),&Menu::compare); 

どちらも最後の文が同じで、私は後がcompareについてより明確だと思います。

+0

私は署名が 'static bool Menu :: compare(const Recipes&lhs、const Recipes&rhs)'になると期待しています。 –

+0

@Mooing Duck:これは比較関数オブジェクトに関するものです。一定。 –

関連する問題