首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按值对unordered_map或map进行C++排序

按值对unordered_map或map进行C++排序
EN

Stack Overflow用户
提问于 2019-06-12 09:18:18
回答 1查看 548关注 0票数 0

我有python代码,我正在尝试将其转换为C++等效项。

代码语言:javascript
复制
dict1 = {i:(val1,val2,val3)} 
dict_sorted = sorted(dict1.items(), key=lambda kv: kv[1][2])

这将按val3对字典dict1进行排序,并存储在dict_sorted中(它不是字典)。

在c++中,我有类似于上面的std::unordered_map<int, std::vector<double>> dict1map。向量将具有val1,val2,val3。如何使用val3对此无序映射进行排序

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-12 09:34:17

作为I noted in the comments,Python代码生成一个由两个tuple组成的排序list,根据每个tuple中第二个元素的第三个元素进行排序(结果不是dict)。对于等效的C++代码,您可以用std::unordered_map替换dict,用std::vector替换list,用std::pair替换two-tuple;为了精确匹配Python的sorted结果,您可能希望使用std::stable_sort进行排序。

所以类似于(其中dict1是你的unordered_map):

代码语言:javascript
复制
using kv_pair = std::pair<int, std::vector<double>>;

std::vector<kv_pair> dict_sorted;
dict_sorted.reserve(dict1.size());
for (const auto& kv : dict1) {
    dict_sorted.emplace_back(kv.first, kv.second);
}
std::stable_sort(std::begin(dict_sorted), std::end(dict_sorted),
                 [](const kv_pair& a, const kv_pair& b) { return a.second[2] < b.second[2]; });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56553458

复制
相关文章

相似问题

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