特定键在 std::multimap 中出现的次数
How many time a specific key occur in std::multimap
我正在用 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_range
和upper_bound - lower_bound
也很好。
相关文章:
- 使用std::multimap迭代器创建std::list
- std::multimap<std::chrono::milliseconds, T>::rbegin 在 MSVS-13 中指向 end()?
- C++在使用std::multimap时出现运行时错误的几率很小
- 用 C++20 的给定键读取/写入 std::multimap 的所有值?
- std::multimap::erase() 在迭代时
- 访问 std::multimap 值的最佳方式?
- 如何使用 std::multimap 将整数键映射到两个用作多维数组坐标的整数值(对于井字)?
- "std::multimap"是否保证每个键的实际值在相等范围内?
- 特定键在 std::multimap 中出现的次数
- swig:std/multimap.i似乎打破了TCL包装
- 如何使用"std::multimap"或任何其他容器对多个值进行排序?
- c++ 为什么 std::multimap 比 std::p riority_queue 慢
- std :: multimap :: emplace覆盖旧键
- 初始化静态std :: multimap在其中声明的方法
- 我从std :: multimap.lower_bound获得了无效的指针
- 哪个元素将从 std::multimap::find 返回,同样,std::multiset::find
- 使用 std::multimap,是否可以保证 begin() 方法返回最新的元素
- 为什么 std::multimap 没有 [] 运算符
- 如何获取 std::multimap 给定键"previous"项的迭代器(或值)?
- 将 std::multimap 转换为 std::p riority_queue