【发布时间】:2014-09-23 06:33:24
【问题描述】:
所以程序会先输入用户名,然后是 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 进行排序
(vName.begin(), vName.end());
我发现元素 Leto 将与 123 匹配,而 Paul 将与 456 匹配。我如何防止这种情况发生?我如何做到这一点,无论 vName 是如何排序的,vID 都会改变,以便 ID 与名称匹配?
【问题讨论】:
-
存储同时包含名称和 ID 的对象?
-
我不明白你在问我问题吗?
-
你甚至不必发明一个结构。如果您选择走简单的路线,则为您提供了一个:
std::vector<std::pair<std::string, int>>。但是请注意,无论您如何追求这一点,如果这与this question 相关,它就会对binary_search之类的东西提出一个有趣的挑战,即如果您搜索的只是“名称”成员,则自定义比较器。std::map可能更合适。 -
@ZeeZeeZee 我在问这个解决方案是否合适。
-
@juanchopanza 啊好吧我明白了。这是我在弄清楚如何做到这一点时的第一种方法,但前提条件之一是将它们存储在不同的容器中是不可能的。