unordered_set

unordered_setset非常类似,唯一的区别是set会对存进去的数据进行排序,而unordered_set乱序排列
unordered_set有如下三个特性:

  1. 不再以键值对的形式存储数据,而是直接存储数据的值。而在关联式容器set中,是以键值对的方式存储的。且setmap又有所不同,set只能存储键与值相同的键值对,例如键为'a',值为'a'
  2. 容器内部存储的元素的值各不相同,即天然去重。且不能被修改。注意:set也是天然去重。
  3. 容器内的元素乱序存在。

unordered_set成员方法

成员方法功能
find(key)查找值为key的元素,如果找到,则返回一个指向该元素的正向迭代器;如果没找到,则返回一个与end()方法相同的迭代器
end()返回指向容器中最后一个元素之后位置的迭代器

实例

在这里插入图片描述

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) 
    {
        unordered_set<int> res;
        unordered_set<int> nums(nums1.begin(),nums1.end());
        for(auto num : nums2)
        {
            if(nums.find(num)!=nums.end())//此处判断就使用了find()与end()
            {
                res.insert(num);
            }
        }
        return vector<int>(res.begin(),res.end());
    }
};

unordered_set的其他成员方法

begin()返回指向容器中第一个元素的正向迭代器
end()返回指向容器中最后一个元素之后位置的正向迭代器
cbegin()和 begin() 功能相同,只不过其返回的是 const 类型的正向迭代器
cend()和 end() 功能相同,只不过其返回的是 const 类型的正向迭代器
empty()若容器为空,则返回 true;否则 false
size()返回当前容器中存有元素的个数
max_size()返回容器所能容纳元素的最大个数,不同的操作系统,其返回值亦不相同
find(key)查找以值为 key 的元素,如果找到,则返回一个指向该元素的正向迭代器;反之,则返回一个指向容器中最后一个元素之后位置的迭代器
count(key)在容器中查找值为 key 的元素的个数
equal_range(key)返回一个 pair 对象,其包含 2 个迭代器,用于表明当前容器中值为 key 的元素所在的范围。
emplace()向容器中添加新元素,效率比 insert() 方法高。
emplace_hint()向容器中添加新元素,效率比 insert() 方法高
insert()向容器中添加新元素
erase()删除指定元素
clear()清空容器,即删除容器中存储的所有元素
swap()交换 2 个 unordered_map 容器存储的元素,前提是必须保证这 2 个容器的类型完全相等
bucket_count()返回当前容器底层存储元素时,使用桶(一个线性链表代表一个桶)的数量
max_bucket_count()返回当前系统中,unordered_map 容器底层最多可以使用多少桶
bucket_size()返回第 n 个桶中存储元素的数量
bucket()返回值为 key 的元素所在桶的编号
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐