因此,程序會獲取用戶名和ID,並將它們存儲在向量vName和vID中。例如,我有這樣的代碼,需要一個字符串名稱如何根據另一個預先排序的字符串向量來命令包含字符串的向量?
cout << "what is your name?";
getline(cin sName)
vName.push_back(sName)
cout << "what is your name?";
getline(cin sName)
vName.push_back(sName)
如果用戶輸入的名稱保羅和勒託的ID 123和456,如果我清點向量內的元素,我會找回來正是因爲我把他們。但如果我決定這樣
(vName.begin(), vName.end());
排序VNAME和我清點勒託將與123相匹配和保羅將與456如何防止這種情況的發生相匹配的元素?我如何做到這一點,無論vName如何排序,vID都會改變,以便這些ID與名稱匹配?首先排序您的ID載體使用的名稱爲代理訂貨
struct Person {
string name;
int id;
};
vector<Person> people;
如果你不喜歡,你可以做「代理排序」:
存儲包含名稱和ID的對象? – juanchopanza 2014-09-23 06:35:40
我不明白你問我一個問題嗎? – ZeeZeeZee 2014-09-23 06:42:00
你甚至不需要發明一個結構。如果你選擇了簡單的路線,就爲你提供了一個:'std :: vector>'。但請注意,無論您如何追求此目標,如果這與[**此問題**]相關(http://stackoverflow.com/questions/25957725/i-am-trying-to-use-a-do- while-loop-to-repeat-a-certain-of-my-program-and)它對'binary_search'等東西提出了一個有趣的挑戰,即如果你正在搜索的是「名稱」會員。一個'std :: map'可能更適合。 –
WhozCraig
2014-09-23 06:44:03