因此程序将接收用户名和 ID,并将它们存储在 vector 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,如果我计算出 vector 中的元素,我将完全按照输入的方式取回它们。但是如果我决定像这样对 vName 进行排序
(vName.begin(), vName.end());
我计算出元素 Leto 将与 123 匹配,而 Paul 将与 456 匹配。我如何防止这种情况发生?我该怎么做,以便无论 vName 如何排序,vID 都会发生变化,以便 ID 与名称相匹配?
最佳答案
你应该使用一个结构:
struct Person {
string name;
int id;
};
vector<Person> people;
如果您不喜欢这样,您可以通过首先使用名称作为排序代理对您的 ID vector 进行排序来进行“代理排序”。在这两种解决方案中的任何一种中,您都需要实现自己的谓词以按名称字段进行排序。
关于c++ - 我如何根据另一个预先排序的字符串 vector 来排序包含字符串的 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25988374/