我得到的最好的例子是,我想根据名字的分数对它们进行排序。
vector <string> Names {"Karl", "Martin", "Paul", "Jennie"};
vector <int> Score{45, 5, 14, 24};因此,如果我将分数排序为{5、14、24、45},则还应该根据它们的分数对名称进行排序。
发布于 2016-05-21 23:06:41
您可以这样做的一种方法是将名称和分数存储在单个数据结构(如std::vector<std::pair<std::string,int>> )中,然后按以下方式进行排序:
#include <algorithm>
#include <vector>
#include <string>
#include <utility>
//...
std::vector<std::pair<std::string, int>> names_scores_vec;
// ... populate names_scores_vec...
// lambda for sorting, change to > for descending order
auto sort_by_scores = [](const std::pair<string,int>& _lhs,
const std::pair<string,int>& _rhs) { return _lhs.second < _rhs.second; };
std::sort(names_scores_vec.begin(), names_scores_vec.end(), sort_by_scores);或者,如果您想要重复的键(即允许重复的名称),则使用诸如std::map或std::multimap之类的存储。
https://stackoverflow.com/questions/37368787
复制相似问题