📅  最后修改于: 2023-12-03 15:29:51.116000             🧑  作者: Mango
C++ STL中的unordered_multiset是一个关联容器,用于存储键值对,键值可重复。在unordered_multiset中,元素的顺序不被保证,但是可以在$O(1)$时间内搜索元素。unordered_multiset中的find()函数用于查找特定的键值是否在容器中。
unordered_multiset的声明方式如下:
#include <unordered_set>
std::unordered_multiset <int> set;
或者指定键值类型和哈希比较函数(可选):
#include <unordered_set>
struct MyHash {
std::size_t operator()(int const& x) const noexcept {
return x;
}
};
struct MyEqual {
bool operator()(int const& x, int const& y) const noexcept {
return x == y;
}
};
std::unordered_multiset <int, MyHash, MyEqual> set;
unordered_multiset的find()函数用法如下:
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_multiset <int> set = {1, 2, 3, 4, 5, 5, 5, 6};
auto it = set.find(5);
if (it != set.end()) {
std::cout << *it << " found in set!" << std::endl;
} else {
std::cout << "5 not found in set!" << std::endl;
}
return 0;
}
输出为:
5 found in set!
如果要查找的键值不存在,find()函数返回set.end()。
unordered_multiset的find()函数时间复杂度为$O(1)$,即常数时间。实际上,它的实现方式类似于哈希表。
C++ STL中的unordered_multiset提供了一种高效的键值对存储方式,而find()函数可以在常数时间内查找特定的键值。unordered_multiset的灵活性非常高,能够应对各种场景,是C++程序员必备的容器之一。