#include<set>
set集合中的元素按照一定的顺序排列。set和multiset的区别就是键值是否唯一。
模板参数:
template<class key, class compare, class Allocator=allocator>
第一个参数key是键值类型,第二个参数是为排序值而定义的比较函数的类型,第三个参数是被实现的存储分配符的类型。在有些编译器的具体实现中,第三个参数可以省略。第二个参数使用了合适形式的迭代器为键定义了特定的关系操作符,并用来在容器中遍历值时建立顺序。构造函数:
默认构造函数:
explicit set(const Compare&=compare());
如:set<int,less<int> > set1;
less<int>是一个标准类,用于形成降序排列函数对象。升序排列是用greater<int>。 通过指定某一预先定义的区间来初始化set对象的构造函数:
template<class InputIterator> set(InputIterator, InputIterator,\ const Compare&=compare());
如:set<int ,less<int> >set2(vector1.begin(),vector1.end());
复制构造函数:
set(const set<Key,Compare&>);
如:set<int ,less<int> >set3(set2);
一个简单的程序:#include <iostream> #include <set> using namespace std; int main(void) { set<int> set1; for(int i=0; i<10; ++i) set1.insert(i); for(set<int>::iterator p=set1.begin();p!=set1.end();++p) cout<<*p<<""; if(set1.insert(3).second)//把3插入到set1中 //插入成功则set1.insert(3).second返回1,否则返回0 //此例中,集中已经有3这个元素了,所以插入将失败 cout<<"set insert success"; else cout<<"set insert failed"; int a[] = {4, 1, 1, 1, 1, 1, 0, 5, 1, 0}; multiset<int> A; A.insert(set1.begin(),set1.end()); A.insert(a,a+10); cout<<endl; for(multiset<int>::iterator p=A.begin();p!=A.end();++p) cout<<*p<<" "; cin.get(); return 0; }在集之间可以进行并集(set_union())、交集(set_intersection())、差集(set_diffrence())d等操作,功能强大。