C++ STL 中的 unordered_set erase () 函数
在 C++ STL 中,unordered_set
是一个哈希表实现的集合容器,具有高效的查找和插入性能。而erase
函数是unordered_set
容器中的一个成员函数,用于删除unordered_set
容器中指定值的元素,本篇文章将介绍unordered_set
的erase
函数以及应用示例。
unordered_set erase() 函数的语法格式
erase
函数被定义为 unordered_set
容器的一个成员函数,其语法格式如下:
size_type erase ( const key_type& key );
erase
函数接收一个key值作为参数,返回被删除元素的数量。如果容器中不存在该key值,返回值为0。
unordered_set erase() 函数的使用示例
下面我们通过几个实例来介绍erase
函数的使用方式。
例1:删除 unordered_set
中的某个元素
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_set<int> my_set = {1, 2, 3, 4, 5};
std::cout << "unordered_set before erase:";
for(int x: my_set) std::cout << ' ' << x;
std::cout << '\n';
my_set.erase(3);
std::cout << "unordered_set after erase:";
for(int x: my_set) std::cout << ' ' << x;
std::cout << '\n';
return 0;
}
输出结果为:
unordered_set before erase: 5 1 4 2 3
unordered_set after erase: 5 1 4 2
例2:删除 unordered_set
中多个元素
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_set<int> my_set = {1, 2, 3, 4, 5};
std::cout << "unordered_set before erase:";
for(int x: my_set) std::cout << ' ' << x;
std::cout << '\n';
my_set.erase(2);
my_set.erase(4);
std::cout << "unordered_set after erase:";
for(int x: my_set) std::cout << ' ' << x;
std::cout << '\n';
return 0;
}
输出结果为:
unordered_set before erase: 5 1 4 2 3
unordered_set after erase: 5 1 3
例3:删除 unordered_set
中不存在的元素
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_set<int> my_set = {1, 2, 3, 4, 5};
std::cout << "unordered_set before erase:";
for(int x: my_set) std::cout << ' ' << x;
std::cout << '\n';
if(my_set.erase(6)) {
std::cout << "6 has been erased.\n";
} else {
std::cout << "6 is not found in the unordered_set.\n";
}
std::cout << "unordered_set after erase:";
for(int x: my_set) std::cout << ' ' << x;
std::cout << '\n';
return 0;
}
输出结果为:
unordered_set before erase: 5 1 4 2 3
6 is not found in the unordered_set.
unordered_set after erase: 5 1 4 2 3
unordered_set erase() 函数的注意点
在使用erase
函数时应注意以下事项:
unordered_set
中erase
函数删除的是指定key值的元素,如果想删除容器中的元素,需要使用迭代器(iterator);- 如果
unordered_set
中不存在指定key值,则erase
函数返回值为0。
结论
unordered_set
的erase
函数提供了一种方便的方法删除指定元素。在使用时应注意函数的参数和返回值,避免不必要的开销。