特定键在 std::multimap 中出现的次数

How many time a specific key occur in std::multimap

本文关键字:multimap std      更新时间:2023-10-16

我正在用 c++ 处理多映射数据类型,我想知道我的映射中存在多少次特定键。接下来的示例将解释我正在寻找的内容:

#include <iostream>
#include <map>
int main ()
{
  std::multimap<char,int> mymap;
  mymap.insert ({'c',10});
  mymap.insert ({'y',20});
  mymap.insert ({'c',30});
  mymap.insert ({'z',40});
  mymap.insert ({'c',40});

  std::cout << "mymap.size() is " << mymap.size() << 'n';
  return 0;
}

上面的代码将为我提供地图中唯一键的数量,这不是我要找的。

    #include <iostream>
    #include <map>
    int main ()
    {
      std::multimap<char,int> mymap;
      mymap.insert ({'c',10});
      mymap.insert ({'y',20});
      mymap.insert ({'c',30});
      mymap.insert ({'z',40});
      mymap.insert ({'c',40});
      std::cout << "mymap.size('c') is " << mymap.size('c') << 'n';
      return 0;
    }

我想要一种机制来计算键"c"在我的地图中重复了多少次。上一个示例的正确答案是 3。

使用 mymap.count('c') .如果要使用相同的键循环访问元素equal_range请使用该方法。

使用 std::equal_range(key) 获取范围的迭代器,std::distance查找计数。

最初的问题是使用地图。正如一些程序员的建议,它被改为多映射。

据我所知,multimap 没有 [] 运算符。

所以把[]操作改成insert函数,用count函数直接得到你想要的。建议的其他答案equal_rangeupper_bound - lower_bound也很好。