gpt4 book ai didi

c++ - 如何按其 .second 参数对 map 进行排序

转载 作者:IT老高 更新时间:2023-10-28 21:50:01 28 4
gpt4 key购买 nike

如果我有一个从字符串到 int 的 STL 映射,并且我想打印所有排序的 int 值 - 我该怎么做?

最佳答案

由于 map 的实现,您无法按 map 的值对 map 进行排序。

如果你想以这样的排序顺序发出 map 中的元素,那么你必须首先将 map 内容转储到一个 vector 中(比如说)并对该 vector 进行排序:

template <typename T1, typename T2>
struct less_second {
typedef pair<T1, T2> type;
bool operator ()(type const& a, type const& b) const {
return a.second < b.second;
}
};

map<string, int> mymap;
// …

vector<pair<string, int> > mapcopy(mymap.begin(), mymap.end());
sort(mapcopy.begin(), mapcopy.end(), less_second<string, int>());

或者,只需从映射中复制值,保留键,然后直接对结果 vector 进行排序。

关于c++ - 如何按其 .second 参数对 map 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453425/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com