首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++,基于另一个向量排序

C++,基于另一个向量排序
EN

Stack Overflow用户
提问于 2016-05-21 22:54:11
回答 7查看 24.3K关注 0票数 33

我得到的最好的例子是,我想根据名字的分数对它们进行排序。

代码语言:javascript
复制
vector <string> Names {"Karl", "Martin", "Paul", "Jennie"};
vector <int> Score{45, 5, 14, 24};

因此,如果我将分数排序为{5、14、24、45},则还应该根据它们的分数对名称进行排序。

EN

Stack Overflow用户

发布于 2016-05-21 23:06:41

您可以这样做的一种方法是将名称和分数存储在单个数据结构(如std::vector<std::pair<std::string,int>> )中,然后按以下方式进行排序:

代码语言:javascript
复制
#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::mapstd::multimap之类的存储。

票数 3
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37368787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档