码迷,mamicode.com
首页 > 编程语言 > 详细

C++STL之set容器

时间:2018-03-06 20:16:43      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:插入   multiset   节点   set   而且   it!   五个   红黑树   比较   

set是STL中一种标准关联容器(vector,list,string,deque都是序列容器,而set,multiset,map,multimap是标准关联容器),它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection) (set_difference) (set_union) 对称差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允许重复那么可以使用multiset

#include<set>
#include<iterator>
#include<iostream>
using namespace std;
int main()
{
set<int>v1;

//insert插入
v1.insert(1);
v1.insert(6);
v1.insert(5);
v1.insert(1);  //元素1因为已经存在所以set中不会再次插入1
v1.insert(10);
v1.insert(9);
//遍历set,可以发现元素是有序的 set<int>::iterator it; for(it=v1.begin();it!=v1.end();it++)   cout<<*it<<" "; cout<<endl; //使用size()函数可以获得当前元素个数 cout<<v1.size()<<endl; if(v1.find(200)==v1.end()) //find()函数可以查找元素是否存在 cout<<"200 isn‘t in the set v1"<<endl; //find会挨个查找set,
//当到达set.end()时,就是一个也没找到,返回end()
set<int>v2; for(int i=6;i<15;i++) v2.insert(i); for(it=v2.begin();it!=v2.end();it++) cout<<*it<<" "; cout<<endl; set<int>v3; //获得两个set的并 set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),insert_iterator<set<int> >(v3,v3.begin()));//注意第五个参数的形式 copy(v3.begin(),v3.end(),ostream_iterator<int>(cout," ")); cout<<endl; v3.clear();//注意进行集合操作之前接收结果的set要调用clear()函数清空一下 //获得两个set的交 set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),insert_iterator<set<int> >(v3,v3.begin())); copy(v3.begin(),v3.end(),ostream_iterator<int>(cout," ")); cout<<endl;
//获得两个set的差 v3.clear(); set_difference(v1.begin(),v1.end(),v2.begin(),v2.end(),insert_iterator<set<int> >(v3,v3.begin())); copy(v3.begin(),v3.end(),ostream_iterator<int>(cout," ")); cout<<endl;
//获得两个set的对称差,也就是假设两个集合分别为A和B那么对称差为AUB-A∩B v3.clear(); set_symmetric_difference(v1.begin(),v1.end(),v2.begin(),v2.end(),insert_iterator<set<int> >(v3,v3.begin())); copy(v3.begin(),v3.end(),ostream_iterator<int>(cout," ")); cout<<endl; return 0; }

 

C++STL之set容器

标签:插入   multiset   节点   set   而且   it!   五个   红黑树   比较   

原文地址:https://www.cnblogs.com/kannyi/p/8516176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!