在C++标准模板库(STL)中,unordered_set 是一个非常实用的容器,它基于哈希表实现,能够提供平均常数时间复杂度的插入、删除和查找操作。本文将带你从零开始掌握 C++ unordered_set 的基本概念、常用方法以及实际应用场景,即使你是编程小白,也能轻松上手!

unordered_set 是 C++11 引入的一个关联容器,用于存储唯一的元素,并且不按特定顺序排列。与 set 不同,unordered_set 使用哈希函数来组织数据,因此访问速度更快(平均 O(1)),但牺牲了元素的有序性。
它的核心特点包括:
首先,你需要包含头文件 <unordered_set>,然后就可以创建和使用 unordered_set 了。
#include <iostream>#include <unordered_set>using namespace std;int main() { // 创建一个空的 unordered_set unordered_set<int> mySet; // 初始化时添加元素 unordered_set<string> words = {"apple", "banana", "cherry"}; return 0;}
以下是 unordered_set 最常用的几个成员函数:
insert(value):插入元素erase(value):删除元素find(value):查找元素,返回迭代器count(value):返回元素是否存在(0 或 1)size():返回元素个数empty():判断是否为空#include <iostream>#include <unordered_set>#include <string>using namespace std;int main() { unordered_set<string> fruits; // 插入元素 fruits.insert("apple"); fruits.insert("banana"); fruits.insert("apple"); // 重复插入无效 cout << "集合大小: " << fruits.size() << endl; // 输出 2 // 查找元素 if (fruits.find("banana") != fruits.end()) { cout << "找到了 banana!" << endl; } // 使用 count 判断是否存在 if (fruits.count("cherry") == 0) { cout << "cherry 不存在" << endl; } // 删除元素 fruits.erase("apple"); cout << "删除 apple 后大小: " << fruits.size() << endl; // 输出 1 return 0;}
很多初学者会混淆 set 和 unordered_set。它们的关键区别如下:
| 特性 | set | unordered_set |
|---|---|---|
| 底层实现 | 红黑树 | 哈希表 |
| 元素顺序 | 有序(升序) | 无序 |
| 时间复杂度 | O(log n) | 平均 O(1),最坏 O(n) |
当你需要快速判断某个元素是否存在(例如去重、黑名单检测、缓存等),unordered_set 是理想选择。这也是 unordered_set用法 中最常见的实践。
但要注意以下几点:
mySet[0] 是非法的)unordered_set 是 C++ 中高效处理唯一元素集合的强大工具。通过本文,你已经掌握了 C++哈希集合 的基本语法、常用操作以及适用场景。建议多动手写代码练习,加深理解!
关键词回顾:C++ unordered_set、C++哈希集合、unordered_set用法、C++ STL容器。
本文由主机测评网于2025-12-25发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251212661.html