set的特性是,所有元素都会根据元素的键值自动排序,set的键值就是实值。不允许有两个元素相同的键值。
其次!不可以通过set的迭代器改变set的元素值,因为其底部使用红黑树排序,如果更改会严重破坏其结构。
其与list的性质相同:客户端进行insert/delete时,操作前的所有迭代器,操作完成后仍然有效。
****************************************************************************************************
set的常用方法如下:
begin() ,返回set容器的第一个元素
end() ,返回set容器的最后一个元素
clear() ,删除set容器中的所有的元素
empty() ,判断set容器是否为空
max_size() ,返回set容器可能包含的元素最大个数
size() ,返回当前set容器中的元素个数
rbegin ,返回的值和end()相同
rend() ,返回的值和rbegin()相同
**************************************************************************************************实例代码如下:
#include<set>
#include<iostream>
using namespace std;
int main()
{
int i;
int ia[5] = {0,1,2,3,4};
set<int> iset(ia,ia+5);
cout<<"size = "<< iset.size()<<endl;
cout<<"3 count="<<iset.count(3) <<endl;
iset.insert(3);
cout<<"size="<<iset.size()<<endl;
cout<<"3 count="<<iset.count(3)<<endl;
iset.insert(5);
cout<<"size="<<iset.size()<<endl;
cout<<"3 count="<<iset.count(3)<<endl;
iset.erase(1);
cout<<"size="<<iset.size()<<endl;
cout<<"3 count ="<<iset.count(3)<<endl;
cout<<"1 count="<<iset.count(1)<<endl;
set<int>::iterator ite1=iset.begin();
set<int>::iterator ite2=iset.end();
for(;ite1!= ite2;++ite1)
cout<<*ite1;
cout<<endl;
ite1 = iset.find(3);
if(ite1 == iset.end())
cout<<"3 found"<<endl;
ite1 = iset.find(1);
if(ite1 == iset.end())
cout<< "1 not found"<<endl;
system("pause");
}