如何根据另一个预先排序的字符串向量来命令包含字符串的向量?

时间:2014-09-23 06:33:24

标签: c++ sorting vector

因此,程序将接受用户的名称,然后将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与名称匹配?

1 个答案:

答案 0 :(得分:2)

你应该使用结构:

struct Person {
  string name;
  int id;
};
vector<Person> people;

如果您不喜欢,可以先使用名称作为排序代理,对ID矢量进行排序,然后进行“代理排序”。在这些解决方案中的任何一个中,您都需要实现自己的谓词,以便按名称字段进行排序。