我正在使用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.
答案 0 :(得分:1)
使用std::equal_range(key)
获取范围的迭代器,使用std::distance
查找计数。
答案 1 :(得分:1)
使用mymap.count('c')
。如果要使用相同的键迭代元素,请使用equal_range
方法。
答案 2 :(得分:1)
最初的问题是使用地图。正如一些程序员所建议的,它被改为多图。
据我记得,multimap没有[]运算符。
因此将[]操作更改为insert
函数,并使用count
函数直接获得所需内容。建议的其他答案equal_range
和upper_bound - lower_bound
也没问题。