C++中的unordered_map count()
C++ STL提供了一系列容器操作用于存储数据,其中一个重要的容器是unordered_map。unordered_map是一个键值对的哈希表容器,可以提供 O(1) 的复杂度进行存储和查找操作。这里我们要介绍的是unordered_map中的count()函数,用于统计unordered_map中给定键的数量。
count()函数
count()函数的常见用法是:
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<string, int> myMap = {{"apple", 2}, {"banana", 3}, {"orange", 4}, {"pear", 1}};
int numOfApple = myMap.count("apple");
cout << "The number of apples is " << numOfApple << endl;
return 0;
}
上述代码输出的结果是:
The number of apples is 1
该代码中,首先我们定义了一个unordered_map myMap,其中存储了四个水果的名称和对应的数量。然后我们使用count()函数查找了哈希表中键为“apple”的元素数量,并将结果打印输出。因为哈希表特性,键名的数量最多为1个,所以count()函数返回的结果要么是0,要么是1。
此外,我们也可以使用count()函数来遍历unordered_map,如下例所示:
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<string, int> myMap = {{"apple", 2}, {"banana", 3}, {"orange", 4}, {"pear", 1}};
for (auto& x: myMap) {
cout << "There are " << x.second << " " << x.first << "(s)" << endl;
}
return 0;
}
上述代码遍历了myMap中的所有键值对,并将键和值依次打印输出,结果如下:
There are 3 banana(s)
There are 4 orange(s)
There are 2 apple(s)
There are 1 pear(s)
在遍历的过程中,使用auto& x: myMap语句可以让”x”以引用的形式遍历myMap中的元素。
总结
unordered_map是一个用于存储键值对的哈希表容器,可以通过count()函数按键来获取元素数量,并可以通过遍历unordered_map将所有元素遍历一遍。这是一个高效、灵活且易于使用的STL容器之一,适用于各种场景,是C++程序员的必备工具之一。