📜  C++ STL中的unordered_set equal_range(1)

📅  最后修改于: 2023-12-03 14:39:52.723000             🧑  作者: Mango

C++ STL中的unordered_set equal_range

在C++ STL中,我们可以使用unordered_set容器来存储一组不同的元素,而且这些元素是无序的。当我们需要在unordered_set中查找某个元素时,我们可以使用equal_range函数来查找。本篇文章将介绍C++ STL中的unordered_set equal_range函数的使用。

unordered_set

unordered_set是基于哈希表实现的,由于其内部采用哈希表的结构,因此能够提供比多数其他容器更快的访问速度。unordered_set内部的元素是无序的,因为哈希表内部的元素只是根据哈希函数的值,按随机顺序存放在哈希表中的。

我们可以使用unordered_set的insert函数来往unordered_set中添加元素,使用erase函数来删除元素,使用empty函数来检查unordered_set是否为空,使用size函数来获取unordered_set中元素的个数。

equal_range函数

unordered_set的equal_range函数用于查找元素,并返回该元素所在的区间。由于unordered_set中的元素是无序的,因此区间是以两个迭代器的形式返回的,而这两个迭代器分别指向第一个等于该元素的值和最后一个等于该元素的值。

equal_range函数的语法如下:

std::pair<iterator, iterator> equal_range (const key_type& k);

函数的参数是要查找的元素的键值,函数的返回值是一个pair类型,包含两个迭代器,分别指向第一个等于该元素的值和最后一个等于该元素的值。

下面是equal_range函数的使用示例:

#include <iostream>
#include <unordered_set>

int main() {
    std::unordered_set<int> myset;
    myset.insert(10);
    myset.insert(20);
    myset.insert(30);
    myset.insert(40);
    myset.insert(50);
    myset.insert(60);

    auto range = myset.equal_range(30);
    for (auto it = range.first; it != range.second; ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果为:

30
总结

unordered_set是基于哈希表实现的容器,具有快速访问元素的优点。equal_range函数用于在unordered_set容器中查找元素,并返回该元素所在的区间。由于unordered_set中的元素是无序的,因此区间是以两个迭代器的形式返回的。