映射C++排序并按值插入元素 如何创建一个自定义比较器,以在C++中的一个映射中按值插入和排序元素?通常在地图中,元素按键排序。我想按值来进行排序。 < P>这是不可能的,因为它的内部实现,C++基于它的值来排序映射。 Map仅根据其键对元素进行排序

映射C++排序并按值插入元素 如何创建一个自定义比较器,以在C++中的一个映射中按值插入和排序元素?通常在地图中,元素按键排序。我想按值来进行排序。 < P>这是不可能的,因为它的内部实现,C++基于它的值来排序映射。 Map仅根据其键对元素进行排序,c++,dictionary,C++,Dictionary,但是有一种方法你可以实现你想要的。尽管两者都需要额外的空间 1如果您只希望对所有值进行排序,而不需要它们的映射。您可以将所有键放在一个向量中,然后对向量进行排序 2,假设您也需要该映射。然后,您可以创建一个pair向量,然后定义一个比较器,根据pair的第二个值进行排序 bool sortBySecond(const pair<int, int> &a, const pair<int, int> &b){ return (a.second <

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

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值按升序进行配对排序。

你试图达到你想要的结果是什么?这就像脱水水一样矛盾。根据定义,排序对象是键或键的一部分。根据定义,不能按值排序。如果按值排序,则该值就是键请记住,键必须是唯一的,但值不是唯一的。