unordered_set:无序集合,与 set
类似,但不进行排序,提供更快的查找操作。
一、简介:
unordered_set是C++标准库中的一个容器,用于存储不重复的元素集合。它是哈希表的一种实现,因此能够提供快速的插入、查找和删除操作。它的特性如下:
- 有序性:unordered_set中的元素是无序的,也就是说你不能预知添加到容器中的元素将按照什么样的顺序排列。
- 唯一性:unordered_set中的元素必须是唯一的,相同的元素只能添加一次。
- 容纳类型:unordered_set只允许存储可以hash的对象,例如整型、浮点型、字符串、自定义对象等。
- 预算大小:你可以指定unordered_set容器的预算大小,这样容器可以在初期就分配足够的内存空间。
unordered_set的操作主要包括:
-
插入:可以通过insert函数向容器中插入元素。
-
查找:可以通过find函数查找容器中的元素。
-
删除:可以通过erase函数删除容器中的元素。
-
访问:可以通过迭代器访问容器中的元素。
使用unordered_set的好处在于其高效的操作性能,特别是对于数据量较大的场景
,可以大大提高代码的执行效率。具体详细说明如下:
二、详细操作
1.头文件
#include <unordered_set>
2.插入元素
使用 insert
函数来插入元素到 std::unordered_set
中:
numbers.insert(42);
numbers.insert(17);
numbers.insert(23);
numbers.insert(42); // 重复元素将被忽略
3.遍历 std::unordered_set
for (const auto& number : numbers) {
std::cout << number << std::endl;
}
4.删除元素
你可以使用 erase
函数来删除特定元素:文章来源:https://www.toymoban.com/news/detail-821576.html
numbers.erase(17);
5.查找元素
auto it = numbers.find(42);
if (it != numbers.end()) {
std::cout << "Found: " << *it << std::endl;
} else {
std::cout << "Not Found" << std::endl;
}
6.综合示例
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_set<int> numbers;
numbers.insert(42);
numbers.insert(17);
numbers.insert(23);
numbers.insert(42);
for (const auto& number : numbers) {
std::cout << number << std::endl;
}
auto it = numbers.find(17);
if (it != numbers.end()) {
std::cout << "Found: " << *it << std::endl;
} else {
std::cout << "Not Found" << std::endl;
}
numbers.erase(17);
for (const auto& number : numbers) {
std::cout << number << std::endl;
}
return 0;
}
三、实际场景应用:
-
编译器中的符号表管理
:编译器在解析源代码时会建立一个符号表,用来记录变量、函数等实体的信息。由于符号表中的元素通常是唯一的,并且需要频繁地进行插入和查找操作,因此可以使用unordered_set来实现这个功能。 -
数据库索引
:数据库为了提高查询速度,通常会对数据表建立索引。索引中的元素通常是唯一的,并且需要频繁地进行插入和查找操作,因此可以使用unordered_set来实现这个功能。 -
图形渲染中的顶点缓存
:图形渲染中需要多次绘制相同的几何形状,为了提高效率,可以将这些形状的顶点数据存储在一个unordered_set中,每次绘制时直接从缓存中读取,避免了重复计算。 -
文件系统中的目录结构
:文件系统的目录结构可以用一个unordered_set来表示,其中每个元素代表一个子目录,键值对应子目录的名字。这样就可以方便地查找和修改目录结构。
那么unordered_set的用法就讲到这里,下一章看list的用法。关注我,为大家持续分享更多的内容,让学习变得更简单,与君共勉,共同成长
。也可以关注我的公众号CoderSong
,查看更多精彩文章。文章来源地址https://www.toymoban.com/news/detail-821576.html
到了这里,关于STL之unordered_set 【无序不重复集合】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!