STL unordered_set删除元素

STL unordered_set删除元素教程

如果我们需要删除 STL 中的 unordered_set 容器中的元素,我们可以使用 erase 函数或者使用 clear 函数,我们使用 erase 删除的键存在多个时,会全部删除。

STL unordered_set删除元素详解

语法

//删除 unordered_set 容器中值为 val 的元素 size_type erase (const value_type& val); //删除 position 迭代器指向的元素 iterator erase (const_iterator position); //删除 [first,last) 区间内的所有元素 iterator erase (const_iterator first, const_iterator last);

参数

参数 描述
val 需要删除的值。
position 需要删除的位置。
start 需要删除的开始位置。
end 需要删除的结束位置。

说明

STL 中的 erase 方法支持三种重载方法。

案例

删除unordered_set元素

使用 erase 删除 unordered_set 的元素

#include <iostream> #include <unordered_set> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; unordered_set<string> unordered_set1{"haicoder", "haicoder.net", "www.haicoder.net"}; unordered_set1.erase("haicoder.net"); for(auto iter = unordered_set1.begin(); iter != unordered_set1.end(); iter++) { cout << *iter << endl; } return 0; }

因为,这里需要使用 C++ 11,因此,我们在 Linux 下使用 g++ 进行编译,具体命令如下:

g++ unordered_set.cpp -std=c++11

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

45_unordered_set删除元素.png

我们看到,我们使用了 unordered_set 的 erase 方法,删除了 unordered_set 中指定的元素。

清空unordered_set元素

使用 erase 清空 unordered_set 的所有元素

#include <iostream> #include <unordered_set> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; unordered_set<string> unordered_set1{"haicoder", "haicoder.net", "www.haicoder.net"}; unordered_set1.erase(unordered_set1.begin(), unordered_set1.end()); for(auto iter = unordered_set1.begin(); iter != unordered_set1.end(); iter++) { cout << *iter << endl; } return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

46_unordered_set删除元素.png

我们看到,我们使用了 unordered_set 的 erase 方法,传入了开始迭代器和结束迭代器,清空了 unordered_set 所有元素。

清空unordered_set元素

使用 clear 清空 unordered_set 的所有元素

#include <iostream> #include <unordered_set> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; unordered_set<string> unordered_set1{"haicoder", "haicoder.net", "www.haicoder.net"}; unordered_set1.clear(); cout << "Size =" << unordered_set1.size() << endl; return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

47_unordered_set删除元素.png

我们看到,我们使用了 unordered_set 的 clear 方法,清空了 unordered_set 所有元素。

STL unordered_set删除元素总结

如果我们需要删除 STL 中的 unordered_set 容器中的元素,我们除了可以使用 erase 函数或者使用 clear 函数,我们使用 erase 删除的键存在多个时,会全部删除。