因此,程序会获取用户名和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