当前位置:实例文章 » 其他实例» [文章]STL unordered_set的eraseyong?fa

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` 中的一组连续元素。

#### 单个元素删除

cpptemplate 
bool 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;
}


#### 范围删除
cpptemplate 
size_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()`函数时,需要注意其返回值和可能的异常情况,以避免潜在错误。

相关标签:c++开发语言
其他信息

其他资源

Top