Set 和 multiset 容器(二)
开发工具与关键技术:Visual Studio、C++
作者:张国军
撰写时间:2019年08月16日
set 的大小
#include <iostream>
#include <set>
using namespace std;
void show(set<int>setInt)
{
for (set<int>::iterator it = setInt.begin(); it != setInt.end(); ++it)
{
int iItem = *it;
cout << iItem<<" "; //或直接使用 cout << *it
}
cout << endl;
}
void main()
{
//set.size(); //返回容器中元素的数目
//set.empty(); //判断容器是否为空
set<int> setIntA;
setIntA.insert(3);
setIntA.insert(1);
setIntA.insert(7);
setIntA.insert(5);
setIntA.insert(9);
if (!setIntA.empty())
{
int iSize = setIntA.size(); //5
cout << "setIntA.size():" << iSize << endl;
}
cout << "---show(setIntA)---"<<endl;
show(setIntA);
}
从例子可以看出,如果我们的容器不为空的话,那么就输出我们的容器的元素总数,那么我们的容器setIntA从结果可以看到有五个元素,分别为:1、3、5、7、9
set 的删除
#include <iostream>
#include <set>
using namespace std;
void show(set<int>setInt)
{
for (set<int>::iterator it = setInt.begin(); it != setInt.end(); ++it)
{
int iItem = *it;
cout << iItem<<" "; //或直接使用 cout << *it
}
cout << endl;
}
void main()
{
//set.clear(); //清除所有元素
//set.erase(pos); //删除 pos 迭代器所指的元素,返回下一个元素的迭代器。
//set.erase(beg, end); //删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
//set.erase(elem); //删除容器中值为 elem 的元素。
set<int> setIntA;
setIntA.insert(1);
setIntA.insert(3);
setIntA.insert(5);
setIntA.insert(6);
setIntA.insert(9);
setIntA.insert(11);
set<int>::iterator itBegin = setIntA.begin();
++itBegin;
set<int>::iterator itEnd = setIntA.begin();
++itEnd;
++itEnd;
++itEnd;
cout << "---setIntA---" << endl;
show(setIntA);
setIntA.erase(itBegin, itEnd);
cout << "---setIntA.erase(itBegin, itEnd);---" << endl;
//此时容器 setInt 包含按顺序的 1,6,9,11 四个元素。
show(setIntA);
//删除容器中第一个元素
setIntA.erase(setIntA.begin()); //6,9,11
cout << "---setIntA.erase(setIntA.begin());---" << endl;
show(setIntA);
//删除容器中值为 9 的元素
setIntA.erase(9);
cout << "---setIntA.erase(9);---" << endl;
show(setIntA);
//删除 setInt 的所有元素
setIntA.clear(); //容器为空
cout << "---setIntA.clear();---" << endl;
show(setIntA);
}