【发布时间】:2020-05-24 07:34:21
【问题描述】:
我有一张地图 map<int, map<char,int> > m; 的地图,我想按内部地图的第二个元素对其进行排序,即按 map<char, int> 的 int 值降序排列
我用它对地图的第二个元素进行排序,但在这里我想按降序对内部地图的第二个元素进行排序
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>());
编辑:例如我的地图有以下值:
{3 {A 1}
{D 2}},
{6 {C 2}},
{9 {A 1}
{B 2}},
{12 {B 3}
{C 1}}
那么它应该按照内部映射的第二个元素降序排序
{12 {B 3}
{C 1}},
{6 {C 2}},
{3 {A 1}
{D 2}},
{9 {A 1}
{B 2}}
【问题讨论】:
-
这对我来说并不完全清楚。您能否提供示例数据和预期结果?您想对一个容器容器进行排序。您想通过内部容器中元素的属性对外部容器进行排序吗?
-
@ThomasSablik 我添加了一些例子来说明问题
标签: c++ sorting dictionary vector