📅  最后修改于: 2023-12-03 14:59:47.027000             🧑  作者: Mango
unordered_set
是C++ STL中的一个数据容器,它的内部实现是使用哈希表存储数据。unordered_set
提供了多种操作函数,其中包括delete()
函数,这个函数可以用来删除unordered_set
中的指定元素。
语法:unordered_set::erase(key_type)
或unordered_set::erase(iterator pos)
或unordered_set::erase(iterator first, iterator last)
delete()
函数的作用是将unordered_set
中的指定元素删除。它提供了三种不同的参数形式来删除元素。分别是按照元素值删除、按照迭代器删除和按照区间删除。其中的参数key_type
是指unordered_set
中的元素类型。
使用元素值删除
unordered_set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.erase(2); // 删除值为2的元素
使用迭代器删除
unordered_set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
unordered_set<int>::iterator it = s.find(2); // 查找值为2的元素的迭代器
s.erase(it); // 删除迭代器指定的元素
使用区间删除
unordered_set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
unordered_set<int>::iterator it1 = s.find(1); // 查找值为1的元素的迭代器
unordered_set<int>::iterator it2 = s.find(3); // 查找值为3的元素的迭代器
s.erase(it1, it2); // 删除迭代器之间的元素(不包括it2指向的元素)
delete()
函数的返回值是一个size_type
类型,表示删除的元素个数。
下面是一个完整的使用delete()
函数的示例代码:
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
unordered_set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
cout << "s 中的元素:";
for (auto elem : s) {
cout << elem << " ";
}
cout << endl;
size_t erased_num = s.erase(2);
cout << "删除元素 2," << "共删除了 " << erased_num << " 个元素" << endl;
cout << "删除元素 2 后,s 中的元素:";
for (auto elem : s) {
cout << elem << " ";
}
cout << endl;
return 0;
}
输出结果如下:
s 中的元素:3 2 1
删除元素 2,共删除了 1 个元素
删除元素 2 后,s 中的元素:3 1
另外,值得一提的是,unordered_set
在删除元素时并不会改变其他元素的位置,即使删除一个元素后,其他元素的位置也不会改变,哈希表会自动进行调整。