STL unordered_set的eraseyong?fa
发布人:shili8
发布时间:2025-01-06 05:02
阅读次数:0
**STL unordered_set 的 erase() 函数**
在 C++ 中,`unordered_set` 是一种无序集合容器,它不保证元素的顺序。`erase()` 函数用于从 `unordered_set` 中删除一个或多个元素。
### erase() 函数的使用`erase()` 函数有两个重载版本:
1. **单个元素删除**:该函数用于删除 `unordered_set` 中的一个元素。
2. **范围删除**:该函数用于删除 `unordered_set` 中的一组连续元素。
#### 单个元素删除
cpptemplatebool erase(const Key& k);
* `k`:要删除的元素的键值。
* 返回值:如果删除成功,则返回 `true`,否则返回 `false`。
示例:
cpp#include <iostream> #include <unordered_set> int main() { std::unordered_set<int> mySet = {1,2,3,4,5}; // 删除元素3 if (mySet.erase(3)) { std::cout << "Element3 deleted successfully." << std::endl; } else { std::cout << "Failed to delete element3." << std::endl; } return0; }
#### 范围删除
cpptemplatesize_type erase(const_iterator first, const_iterator last);
* `first`和`last`:要删除的元素范围的迭代器。
* 返回值:删除成功的元素数量。
示例:
cpp#include <iostream> #include <unordered_set> int main() { std::unordered_set<int> mySet = {1,2,3,4,5}; // 删除元素2 到4 auto it = mySet.erase(mySet.find(2), mySet.find(4)); if (it != mySet.end()) { std::cout << "Elements from2 to4 deleted successfully." << std::endl; } else { std::cout << "Failed to delete elements from2 to4." << std::endl; } return0; }
### erase() 函数的注意事项* `erase()`函数会移动容器中的元素,导致容器大小减小。
* 如果删除的元素不存在,则返回值为`false`。
* 范围删除时,如果删除的范围超过容器大小,则行为未定义。
### 总结`STL unordered_set` 的 `erase()` 函数用于从集合中删除一个或多个元素。它有两个重载版本:单个元素删除和范围删除。使用 `erase()`函数时,需要注意其返回值和可能的异常情况,以避免潜在错误。