2011-10-17 75 views
0

我有一個名爲Recipes.h的結構和一個名爲vector<Recipes> recipes的向量。該矢量包含1個int和每個元素中的2個字符串(一個字符串廚師名稱和一個稱爲指令的字符串)。不過,我想僅通過字符串chef_name對整個矢量進行排序。我嘗試做這樣的事情C++排序類類型向量

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

我期望簽名是'靜態布爾Menu :: compare(const Recipes&lhs,const Recipes&rhs)' –

+0

@Minging Duck:我忘了這是關於比較函數對象。固定。 –