C++按值对unordered_map或地图进行排序
C++ sorting unordered_map or map by value
我有python代码,我正在尝试将其转换为C++等效代码。
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>> dict1
或与上面类似的map
。矢量将有val1,val2,val3
.如何使用val3
对这个无序地图进行排序?
正如我在评论中指出的,Python 代码正在对 2 tuple
s 进行排序list
,根据每个tuple
中第二个元素的第三个元素进行排序(结果不是dict
(。对于等效的C++代码,您将dict
替换为std::unordered_map
,list
替换为std::vector
,并将两个tuple
替换为std::pair
;为了精确匹配 Python 的sorted
结果,您需要使用 std::stable_sort
进行排序。
所以像这样(其中dict1
是你的unordered_map
(:
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]; });
相关文章:
- 是否有任何C++功能可以对地图进行排序?
- 如何使地图按值C++排序
- 我正在尝试按降序对地图进行排序,但没有得到预期的结果?
- 尝试按值对地图进行排序,但出现错误
- 对双精度地图进行排序
- 如何在OMNeT++中对地图进行排序?
- 多地图<矢量<int>>,字符>如何排序?
- 少的专业化<>适用于地图但不适用于排序
- 常量地图的意外排序
- C++按值对unordered_map或地图进行排序
- 如何对其中包含地图的列表进行排序
- 为什么我无法使用函数按值对地图进行排序?
- 如何在地图中插入对象以保持其排序
- 根据地图值的属性对地图进行排序
- C++,根据秒迭代对地图内容进行排序
- 如何以相反的顺序对地图进行排序
- 在 c++ 中对地图进行排序
- 获取按地图值排序的映射键向量的最快方法
- 标准::地图按值大小排序(设置<int>)
- 对基于地图C++集合重新排序的有效方法