丽丽 2020-06-08
set.clear(); //清除所有元素
set.erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。
set.erase(beg,end); //删除区间[beg,end)的所有元素,返回下一个元素的迭代器。
set.erase(elem); //删除容器中值为elem的元素。
代码例子:
#include <iostream> #include <set> using namespace std; int main() { set<int> setInt; cout << "第一次遍历setInt,没有任何元素:"; for (set<int>::iterator it = setInt.begin(); it != setInt.end(); it++) { cout << *it << " "; } //在容器中插入元素 cout << endl << "插入20个元素" << endl << endl; for (int i = 0; i < 20; i++) { setInt.insert(i); } cout << "插入20个元素后的第二次遍历setInt" << endl; for (set<int>::iterator it = setInt.begin();it!=setInt.end(); it++) { cout << *it << " "; } cout << endl; //删除迭代器所指的元素,返回下一个元素的迭代器。 cout << "删除迭代器所指的元素 5 " << endl; for (set<int>::iterator it = setInt.begin(); it != setInt.end();) { if (*it == 5) { it = setInt.erase(it); //由于会返回下一个元素的迭代器,相当于进行了it++的操作 } else { it++; } } cout << endl << "删除迭代器所指的元素 5 后遍历 setInt:" << endl; for (set<int>::iterator it = setInt.begin(); it != setInt.end(); it++) { cout << *it << " "; } cout << endl; //删除区间(beg,end)的所有元素,返回下一个元素的迭代器。 cout << endl << "删除元素 15 之后的所有元素"; for (set<int>::iterator it = setInt.begin(); it != setInt.end();) { if (*it == 15) { //如果找到15,删除15之后所有的元素,由于会返回下一个元素的迭代器,相当于进行了it++的操作 it = setInt.erase(it, setInt.end()); } else { it++; } } cout << endl << "删除元素 15 之后的所有元素后遍历 setInt:"; for (set<int>::iterator it = setInt.begin(); it != setInt.end(); it++) { cout << *it << " "; } cout << endl; // 删除容器中值为elem的元素 cout << endl << "删除元素 10"; setInt.erase(10); cout << endl << "删除元素 10 之后遍历 setInt:"; for (set<int>::iterator it = setInt.begin(); it != setInt.end(); it++) { cout << *it << " "; } cout << endl; //清除所有元素 cout << endl << "删除所有元素"; setInt.clear(); cout << endl << "删除所有元素之后遍历 setInt:"; for (set<int>::iterator it = setInt.begin(); it != setInt.end(); it++) { cout << *it << " "; } cout << endl; return 0; }
打印结果:
==================================================================================================================================