【问题标题】:Map C++ Sort and Insert elements by value映射 C++ 按值排序和插入元素
【发布时间】:2018-06-20 01:48:08
【问题描述】:

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

【问题讨论】:

  • 你尝试过什么来达到你想要的结果?
  • 就像“脱水水”一样矛盾。根据定义,被排序的东西是键或键的一部分。根据定义,您不能按值排序。
  • 如果按值排序,该值就是“键”
  • 请记住,键必须是唯一的,但值不是。

标签: c++ dictionary


【解决方案1】:

由于其内部实现,这在 C++ 中不可能根据其值对映射进行排序。 Map 仅根据其键对元素进行排序。

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

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 值升序排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2022-08-14
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    相关资源
    最近更新 更多