使用unordered_set
时间: 2024-10-28 19:11:58 浏览: 12
`unordered_set` 是 C++ 标准库中的关联容器,它是一个无序的、不重复元素的集合。与 `set` 类似,`unordered_set` 的主要优势在于查找速度极快,因为它的内部实现了哈希表,通过哈希函数直接定位元素位置,时间复杂度通常接近 O(1)。然而,由于它是无序的,所以不能保证元素的插入顺序,而且插入和删除操作的时间复杂度也不是 O(1),但在平均情况下它们仍然是很快的。
如果明明使用 `unordered_set`,他会这样做:
```cpp
#include <iostream>
#include <unordered_set>
int main() {
int N;
std::cin >> N;
std::unordered_set<int> unique_numbers; // 使用 unordered_set 存储唯一的随机数
for (int i = 0; i < N; ++i) {
int num;
std::cin >> num;
unique_numbers.insert(num); // 插入新值,自动去除重复
}
int M = unique_numbers.size();
std::cout << M << "\n";
for (const auto& num : unique_numbers) { // 遍历并打印
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
```
使用 `unordered_set` 的好处是插入操作更简单,因为它不需要维护原有的排序,但是查询操作可能会略慢于 `set`,取决于具体的哈希函数性能和容器大小。
阅读全文