STL----set

#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等操作,功能强大。

你可能感兴趣的:(vector,iterator,存储,Class,insert,编译器)