STL之五:set/multiset用法详解
集合使用set或multiset之前,必须加入头文件<set>
Set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。

sets和multiset内部以平衡二叉树实现

set c:创建空集合,不包含任何元素
set c(op):以op为排序准则,产生一个空的set
set c1(c2):复制c2中的元素到c1中
set c(const value_type *first, const value_type* last):复制[first, last)之间元素构成新集合
set c(const value_type *first, const value_type* last,op):以op为排序准则,复制[first, last)之间元素构成新集合。
c.~set()销毁所有元素,释放内存
multiset mc:创建空集合,不包含任何元素
multiset mc(op):以op为排序准则,产生一个空的set
multiset c1(c2):复制c2中的元素到c1中
multiset c(const value_type *first, const value_type* last):复制[first, last)之间元素构成新集合
multiset c(const value_type *first, const value_type* last,op):以op为排序准则,复制[first, last)之间元素构成新集合。
c.~set()销毁所有元素,释放内存
#include "stdafx.h"#include <iostream>#include <set>using namespace std;int main (){int myints[]={12,75,10,32,20,25};set<int> first (myints,myints+3); // 10,12,75set<int> second (myints+3,myints+6); // 20,25,32first.swap(second);cout << "first contains:";for (set<int>::iterator it=first.begin(); it!=first.end(); ++it)cout << ' ' << *it;cout << '\n';cout << "second contains:";for (set<int>::iterator it=second.begin(); it!=second.end(); ++it)cout << ' ' << *it;cout << '\n';return 0;}