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

时间:2017-05-18 09:12:00

标签: c++ dictionary

我正在使用c ++中的multimap数据类型,我想知道我的地图中存在特定键的次数。接下来的例子将解释我正在寻找的内容:

#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;
    }

我想要一种计算密钥&#34; c&#34;在我的地图中重复。对前一个例子的正确答案是3.

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

使用mymap.count('c')。如果要使用相同的键迭代元素,请使用equal_range方法。

答案 2 :(得分:1)

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

据我记得,multimap没有[]运算符。

因此将[]操作更改为insert函数,并使用count函数直接获得所需内容。建议的其他答案equal_rangeupper_bound - lower_bound也没问题。