📜  C++ STL中的unordered_multiset find()函数(1)

📅  最后修改于: 2023-12-03 15:29:51.116000             🧑  作者: Mango

C++ STL中的unordered_multiset find()函数

C++ STL中的unordered_multiset是一个关联容器,用于存储键值对,键值可重复。在unordered_multiset中,元素的顺序不被保证,但是可以在$O(1)$时间内搜索元素。unordered_multiset中的find()函数用于查找特定的键值是否在容器中。

unordered_multiset容器的声明方式

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;
find()函数的使用方法

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++程序员必备的容器之一。