C++ STL set删除数据:erase()和clear()方法
如果想删除 set 容器存储的元素,可以选择用 erase() 或者 clear() 成员方法。
set 类模板中,erase() 方法有 3 种语法格式,分别如下:
如果需要删除 set 容器中存储的所有元素,可以使用 clear() 成员方法。该方法的语法格式如下:
举个例子:
set 类模板中,erase() 方法有 3 种语法格式,分别如下:
//删除 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);
下面程序演示了以上 3 种 erase() 方法的用法:注意,如果要删除的元素就是 set 容器最后一个元素,则 erase() 方法返回的迭代器就指向新 set 容器中最后一个元素之后的位置(等价于 end() 方法返回的迭代器)。
#include <iostream> #include <set> #include <string> using namespace std; int main() { //创建并初始化 set 容器 std::set<int>myset{1,2,3,4,5}; cout << "myset size = " << myset.size() << endl; //1) 调用第一种格式的 erase() 方法 int num = myset.erase(2); //删除元素 2,myset={1,3,4,5} cout << "1、myset size = " << myset.size() << endl; cout << "num = " << num << endl; //2) 调用第二种格式的 erase() 方法 set<int>::iterator iter = myset.erase(myset.begin()); //删除元素 1,myset={3,4,5} cout << "2、myset size = " << myset.size() << endl; cout << "iter->" << *iter << endl; //3) 调用第三种格式的 erase() 方法 set<int>::iterator iter2 = myset.erase(myset.begin(), --myset.end());//删除元素 3,4,myset={5} cout << "3、myset size = " << myset.size() << endl; cout << "iter2->" << *iter2 << endl; return 0; }程序执行结果为:
myset size = 5
1、myset size = 4
num = 1
2、myset size = 3
iter->3
3、myset size = 1
iter2->5
如果需要删除 set 容器中存储的所有元素,可以使用 clear() 成员方法。该方法的语法格式如下:
void clear();
显然,该方法不需要传入任何参数,也没有任何返回值。举个例子:
#include <iostream> #include <set> #include <string> using namespace std; int main() { //创建并初始化 set 容器 std::set<int>myset{1,2,3,4,5}; cout << "1、myset size = " << myset.size() << endl; //清空 myset 容器 myset.clear(); cout << "2、myset size = " << myset.size() << endl; return 0; }程序执行结果为:
1、myset size = 5
2、myset size = 0