之前说了multiset
现在来说说set容器
set 和 mulset 的区别在于容器里不能出现重复的元素
a 和b 重复 <=>“a 必须排在 b 前面” 和“b 必须排在a 前面” 都不成立。
set 插入元素可能不成功。(因为元素不能重复的原因,所以如果插入相同元素就会失败)
set 用法示例:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <set>
using namespace std;
int main()
{
set<int >st;
int a[10]={1,2,3,8,7,7,5,6,8,12};//注意这里有两个7,两个8。
for(int i=0;i<10;++i)
st.insert(a[i]);
cout<<st.size()<<endl;//输出8(两个7,两个8都只留下一个,就是8个)
set<int>::iterator i;//迭代器
for(i=st.begin();i!=st.end();++i)
cout<<*i<<",";//输出1,2,3,5,6,7,8,12,
cout<<endl;
pair<set<int>::iterator,bool> result= st.insert(2);//别慌,下面有解释
if(!result.second)//条件成立说明插入不成功
cout<<*result.first<<"already exists"<<endl;
else
cout<<*result.first<<"inserted."<<endl;
return 0;
}
pair<T1,T2>类型等价于:
struct{
T1 first;
T2 second;
};
例如:
pair <int,double> a;
等价于:
struct{
int fitst;
double second;
} a;
a.first=1;
a.second=93.93;
相应的:pair<set< int >::iterator,bool>
struct{
set< int >::iterator first;
bool second;
};
因篇幅问题不能全部显示,请点此查看更多更全内容