检查multimap c++中是否已经存在值
check if value already exists in multimap c++
如何发现Multimap
已经包含特定值,以及如何找到包含相同键的项目总数?
std::multimap<float,int> obj;
obj.insert ( std::pair<char,int>('a',100) );
obj.insert ( std::pair<char,int>('a',100) );
例如,如果我想检查给定的multimap
obj是否已经包含100值,我该如何检查它,以及如何获得包含字符a的项数为2?
这是一个简短的代码,可以回答您的两个问题:
#include <iostream>
#include <map>
int main()
{
// The map
std::multimap<char,int> obj;
obj.insert ( std::pair<char,int>('a',100) );
obj.insert ( std::pair<char,int>('a',100) );
obj.insert ( std::pair<char,int>('b',100) );
obj.insert ( std::pair<char,int>('b',200) );
obj.insert ( std::pair<char,int>('b',300) );
// Count occurrences of a key
std::cout << "a: " << obj.count('a') << "nb: " << obj.count('b')
<< "nc: " << obj.count('c') << "n";
// Count occurrences of a value
int val = 100, count = 0;
for (const auto& entry : obj)
if (entry.second == val)
count++;
std::cout << "Value " << val << " occurred " << count << " times." << std::endl;
}
为了演示,我把映射做得更大了一点——你最初的多映射类型不正确——你需要把它做成<char, int>
而不是<float, int>
——因为转换,它被编译并"工作"了,但你绝对不希望在你的程序中出现这种情况。
对键的出现次数进行计数的部分使用多映射函数count
,该函数从字面上计数给定键在多映射中的出现次数。
您可以查找给定容器的所有可用函数,并查看哪一个适用于您(如果有的话)。我使用https://en.cppreference.com/w/我更喜欢的网站http://www.cplusplus.com/一因此,对于该网站上的多映射,您可以获得与多映射直接相关的所有内容的列表。查找的好处之一是,您还可以在最新标准中看到新的选项。最后,这个网站的文档部分通常有一个内置的在线编译器/代码部分,您可以运行和编辑(以及在不同的编译器和标准下运行)。这提供了一个更好地理解功能并快速检查您是否有任何变化的机会。
第二部分统计映射中给定值的出现次数——这必须通过检查每个多映射条目及其值来"手动"完成。当然还有其他方法,但这对我来说是最简单的。对于带有常量引用的循环,它使用了一个更推荐的范围(因为它循环通过的条目不应该更改)。
这只检查一个固定值,但您可以通过创建一个常规映射来获得所有值的出现,其中键是多映射中的值,值是它们的计数。这并不难,将是一个很好的练习。
我想,你只能数std::对('a',100)项。看见http://www.cplusplus.com/reference/map/multimap/count/.
如果您只想计算"a"或100,您可以手动迭代所有多映射项。
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 有了gcc,是否可以链接库,但前提是它存在
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 如何检查QList中是否存在值
- 根据某个函数是否存在启用模板
- 地图计数确实很重要,或者只是检查是否存在
- C++中是否存在 std::conditional 的懒惰等价物?
- 无论如何,我可以确定构造函数是否存在吗?
- COM :是否可以查看是否存在对我的某个 COM 对象的进程外引用?我可以释放它吗?
- 堆分配的对象是否存在永不为空的唯一所有者?
- 扩展类中的可选 vir 函数,测试它在运行时是否存在
- 模板化检查是否存在带有参数列表的类成员函数?
- 是否存在包含负号的isdigit函数(过载)
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 检查编译时是否存在静态函数
- 向量是否存在行主要形式?
- 检查 TinyXML 中的元素是否存在
- 检测是否存在具有 C++17 的类成员
- 虚拟继承中是否存在多重继承?
- 我遇到了这个代码片段,不明白. 它递归检查 C++ 字符串中是否存在大写字符