因此,程序将接受用户的名称,然后将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)
如果用户输入名称Paul和Leto以及ID 123和456,如果我在向量中输入元素,我将完全按照我的方式将它们取回。但是如果我决定像这样排序vName < / p>
(vName.begin(), vName.end());
并且我认为元素Leto将与123匹配,Paul将与456匹配。我如何防止这种情况发生?我怎么做到这样,无论vName如何排序vID会改变,以便ID与名称匹配?
答案 0 :(得分:2)
你应该使用结构:
struct Person {
string name;
int id;
};
vector<Person> people;
如果您不喜欢,可以先使用名称作为排序代理,对ID矢量进行排序,然后进行“代理排序”。在这些解决方案中的任何一个中,您都需要实现自己的谓词,以便按名称字段进行排序。