我应该如何更正这个 priority_queue 比较函数?

格罗库斯

使用数字数组 nums,我想按出现的频率对唯一数字进行排序。编译器抱怨传递 unordered_map 作为 'this' 参数丢弃限定符。我该如何解决?

    void sortByFreq(const vector<int>& nums) {
      unordered_map<int, int> counts;
      for (auto i: nums) ++counts[i];
      auto byCount = [counts](const int& a, const int& b) { return counts[a] > counts[b]; };
      priority_queue<int, vector<int>, decltype(byCount)> minFreq(byCount);
      for (auto& kv: counts) {
        minFreq.push(kv.first);
      }
      ......
    }
马雷克

为什么你有一个priority_queue看起来我们遗漏了一些信息。

有几种方法可以解决countslambda 和 lambda 的问题

  • 使用at代替operator[]- IMO最佳解决方案
  • counts按引用捕获
  • 使 lambda 可变(我不喜欢这个)

根据您的描述,这应该可以完成工作:

vector<int> sortedByFreq(const vector<int>& nums)
{
    unordered_map<int, int> counts;
    for (auto i : nums)
        ++counts[i];

    vector<int> result = nums;
    std::sort(result.begin(), result.end(),
              [counts](auto a, auto b) {
                  return counts.at(a) > counts.at(b);
              });

    return result;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获得priority_queue的比较类型?

来自分类Dev

如何使用初始数据和自定义比较器声明stl :: priority_queue?

来自分类Dev

如何在运行时指定比较器类的priority_queue

来自分类Dev

std :: priority_queue中的比较器

来自分类Dev

如何在任何类中创建比较器函数,就像我们在C ++ STL中创建priority_queue一样

来自分类Dev

boost :: heap :: priority_queue与std :: priority_queue的比较器

来自分类Dev

无法通过派生比较到std :: priority_queue

来自分类Dev

c ++:struct和decltype比较器的priority_queue

来自分类Dev

std :: priority_queue比较和队列元素的年龄

来自分类Dev

函数和函数在priority_queue和某种C ++

来自分类Dev

C ++使用自定义比较函数初始化priority_queue

来自分类Dev

如何预分配(保留)priority_queue <vector>?

来自分类Dev

使用自定义比较器作为映射构造函数错误中的值的priority_queue

来自分类Dev

未在范围中声明-Priority_queue C ++的朋友比较器类

来自分类Dev

std :: priority_queue的自定义比较器背后的逻辑

来自分类Dev

为什么不要求Priority_queue实例化中的比较器的模板参数?

来自分类Dev

C++ 中 std::priority_queue 的比较器部分是什么意思?

来自分类Dev

可以使用priority_queue底层容器的成员函数吗

来自分类Dev

为什么priority_queue pop函数不删除top元素?

来自分类Dev

我可以通过清除其底层容器来清除priority_queue吗?

来自分类Dev

我可以std :: unique一个std :: priority_queue

来自分类Dev

如何在C ++中初始化类的priority_queue?

来自分类Dev

您如何在C ++中的priority_queue中对对象排序?

来自分类Dev

C ++ priority_queue

来自分类Dev

为什么此自定义比较器在为std :: sort工作时无法构造std :: priority_queue?

来自分类Dev

为什么此自定义比较器在为std :: sort工作时无法构造std :: priority_queue?

来自分类Dev

如何更正我的哈希函数?

来自分类Dev

STL中的扩充/索引priority_queue

来自分类Dev

扩展std :: priority_queue功能

Related 相关文章

  1. 1

    如何获得priority_queue的比较类型?

  2. 2

    如何使用初始数据和自定义比较器声明stl :: priority_queue?

  3. 3

    如何在运行时指定比较器类的priority_queue

  4. 4

    std :: priority_queue中的比较器

  5. 5

    如何在任何类中创建比较器函数,就像我们在C ++ STL中创建priority_queue一样

  6. 6

    boost :: heap :: priority_queue与std :: priority_queue的比较器

  7. 7

    无法通过派生比较到std :: priority_queue

  8. 8

    c ++:struct和decltype比较器的priority_queue

  9. 9

    std :: priority_queue比较和队列元素的年龄

  10. 10

    函数和函数在priority_queue和某种C ++

  11. 11

    C ++使用自定义比较函数初始化priority_queue

  12. 12

    如何预分配(保留)priority_queue <vector>?

  13. 13

    使用自定义比较器作为映射构造函数错误中的值的priority_queue

  14. 14

    未在范围中声明-Priority_queue C ++的朋友比较器类

  15. 15

    std :: priority_queue的自定义比较器背后的逻辑

  16. 16

    为什么不要求Priority_queue实例化中的比较器的模板参数?

  17. 17

    C++ 中 std::priority_queue 的比较器部分是什么意思?

  18. 18

    可以使用priority_queue底层容器的成员函数吗

  19. 19

    为什么priority_queue pop函数不删除top元素?

  20. 20

    我可以通过清除其底层容器来清除priority_queue吗?

  21. 21

    我可以std :: unique一个std :: priority_queue

  22. 22

    如何在C ++中初始化类的priority_queue?

  23. 23

    您如何在C ++中的priority_queue中对对象排序?

  24. 24

    C ++ priority_queue

  25. 25

    为什么此自定义比较器在为std :: sort工作时无法构造std :: priority_queue?

  26. 26

    为什么此自定义比较器在为std :: sort工作时无法构造std :: priority_queue?

  27. 27

    如何更正我的哈希函数?

  28. 28

    STL中的扩充/索引priority_queue

  29. 29

    扩展std :: priority_queue功能

热门标签

归档