按值映射C ++排序和插入元素

时间:2018-06-20 01:48:09

标签: c++ dictionary

如何在C ++中创建自定义比较器以按值在元素中插入和排序元素?通常,在地图中,元素是按键排序的。我想按值算计。

1 个答案:

答案 0 :(得分:-1)

由于其内部实现,在C ++中无法根据其值对映射进行排序。 地图仅根据其键对元素进行排序。

但是有一种方法可以实现您想要的(尽管两者都需要额外的空间。)

1)如果只希望对所有值进行排序且不需要它们的映射。您可以将所有键放入向量中,然后对向量进行排序。

2)并且假设您也想要该映射。然后,您可以创建pair <>的向量,然后定义一个比较器以基于pair的第二个值进行排序。

bool sortBySecond(const pair<int, int> &a, const pair<int, int> &b){
    return (a.second < b.second);
}

主要内部:

vector<pair<int, int> > vect;
sort(vect.begin(), vect.end(), sortBySecond);

上面的向量将根据您的map值以升序排序。