unordered_set中end()与find()的使用
unordered_setunordered_set与set非常类似,唯一的区别是set会对存进去的数据进行排序,而unordered_set是乱序排列。unordered_set有如下三个特性:不再以键值对的形式存储数据,而是直接存储数据的值。而在关联式容器set中,是以键值对的方式存储的。且set与map又有所不同,set只能存储键与值相同的键值对,例如键为'a',值为'a'。容器内部存储的元
·
unordered_set
unordered_set
与set
非常类似,唯一的区别是set
会对存进去的数据进行排序,而unordered_set
是乱序排列。
unordered_set
有如下三个特性:
- 不再以键值对的形式存储数据,而是直接存储数据的值。而在关联式容器
set
中,是以键值对的方式存储的。且set
与map
又有所不同,set
只能存储键与值相同的键值对,例如键为'a'
,值为'a'
。 - 容器内部存储的元素的值各不相同,即天然去重。且不能被修改。注意:set也是天然去重。
- 容器内的元素乱序存在。
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 的元素所在桶的编号 |
更多推荐
已为社区贡献1条内容
所有评论(0)