std::unordered_set
是 C++ 标准库中的一个容器,用于存储不重复的元素集合。它是哈希表的一种实现,因此能够提供快速的插入、查找和删除操作,平均时间复杂度为 O(1)。每个元素在 std::unordered_set
中只会存在一次,重复的元素会被自动过滤。
下面是 std::unordered_set
的基本用法和一些重要的特点:
-
包含头文件:
在使用
std::unordered_set
之前,你需要包含头文件#include <unordered_set>
。 -
创建和初始化:
#include <unordered_set> using namespace std; unordered_set<int> mySet; // 创建一个空的 unordered_set
你可以用列表初始化语法来初始化
std::unordered_set
:unordered_set<int> mySet = {1, 2, 3, 4};
-
插入元素:
使用
insert
函数向std::unordered_set
中插入元素:mySet.insert(5); // 插入元素 5
-
查找元素:
使用
find
函数查找元素,它返回一个迭代器指向该元素,如果元素不存在,则返回迭代器末尾:auto it = mySet.find(3); if (it != mySet.end()) { cout << "Found: " << *it << endl; }
-
删除元素:
使用
erase
函数删除元素,可以通过元素值或迭代器来指定要删除的元素:mySet.erase(2); // 删除元素 2
-
遍历:
使用范围循环或迭代器来遍历
std::unordered_set
:for (int num : mySet) { cout << num << " "; }
std::unordered_set
在很多情况下是一个非常有用的容器,特别是在需要高效查找不重复元素的场景下。在前面的例子中,我在算法中使用 std::unordered_set
来记录包含 0 的行和列的索引,以便进行后续的清零操作。