在C++ STL中的unordered_multimap find()函数
在C++ STL中,unordered_multimap是一种哈希表结构,它可以快速地插入、查找、删除键值对。对于需要进行频繁查找和删除操作的情况,unordered_multimap是一个很好的选择。
unordered_multimap的find()函数用于查找指定键的值,它返回一个表示位置的迭代器,如果找到指定键对应的值,则迭代器指向该键值对;如果未找到,则迭代器指向unordered_multimap的end()位置。下面是unordered_multimap的find()函数的基本用法:
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_multimap<string, int> u;
u.insert(make_pair("apple", 3));
u.insert(make_pair("banana", 2));
u.insert(make_pair("apple", 4));
auto it = u.find("apple");
if (it != u.end()) {
cout << "Key: " << it->first << ", Value: " << it->second << endl;
} else {
cout << "Key not found." << endl;
}
return 0;
}
上述代码声明了一个unordered_multimap对象u,并向其中插入3个键值对。其中,键”apple”对应的值包括3和4。接着,我们通过调用find()函数查找”apple”对应的值。如果找到了,即it不等于u.end(),那么就输出该键值对的信息。如果没有找到,就输出”Key not found.”。
unordered_multimap的find()函数可以接受的参数有多种,它既可以接受键值对的键作为参数,也可以接受一个键值对类型的迭代器作为参数。下面是以键值对迭代器为参数的示例代码:
auto it = u.find(make_pair("apple", 3));
if (it != u.end()) {
cout << "Key: " << it->first << ", Value: " << it->second << endl;
} else {
cout << "Key not found." << endl;
}
在这个例子中,我们调用find()函数查找键值对(make_pair(“apple”, 3)),即键为”apple”、值为3的键值对。输出结果与前面的例子相同。
unordered_multimap的find()函数使用哈希表实现,插入、查找、删除等操作的时间复杂度均为O(1)。因此,unordered_multimap是一种高效的存储和管理键值对的容器。
结论
unordered_multimap在C++ STL中的find()函数可以快速地查找指定键的值,并返回表示位置的迭代器。使用该函数,可以高效地存储和管理键值对。在实际编程中,我们可以灵活运用unordered_multimap和find()函数,以满足不同的需求。