c++ - 我如何根据另一个预先排序的字符串 vector 来排序包含字符串的 vector ?

标签 c++ sorting vector

因此程序将接收用户名和 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/

相关文章:

c++ - 为什么Webkit运行时pow()计算错误?

c++ - 为什么允许我为包含常量指针的 vector 分配新地址?

Java 6 SE vector 过时了吗?

c++ - 如何在 Qt 中打印所有小数点的 double 值?

c++ - 定义宏时 "##x"是什么意思

c++ - 包含多个 header 以实现多态性

c++ - n 作为参数传递给函数后为 0,这里似乎有什么问题?

php - MySQL,如何按类别排序?

algorithm - 排序整数

c++ - 为什么 C++ std vector 会在分配或调整大小时出现段错误?