stl set常用操作

来源:互联网 发布:淘宝关注店铺链接 编辑:程序博客网 时间:2024/06/01 07:51

STL中的容器:vector封装数组,list封装了链表,map和set封装了二叉树等。

set是关联式容器(关联容器是通过键存取和读取元素、顺序容器通过元素在容器中的位置顺序存储和访问元素),set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。

set,multiset内部构造都是红黑树。

set常用操作:

插入操作:
1、insert(key_value);  将key_value插入到set中 ,返回值是pair<set<int>::iterator,bool>,bool标志着插入是否成功,而iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置。
2、inset(first,second); 将定位器first到second之间的元素插入到set中,返回值是void.
int main(){int a[] = {1,2,3};set<int> s;set<int>::iterator iter;s.insert(a,a+3);for(iter = s.begin() ; iter != s.end() ; ++iter){cout<<*iter<<" ";}cout<<endl;pair<set<int>::iterator,bool> pr;pr = s.insert(5);if(pr.second){cout<<*pr.first<<endl;}return 0;}


删除操作:
erase(iterator)  ,删除定位器iterator指向的值
erase(first,second),删除定位器first和second之间的值
erase(key_value),删除键值key_value的值
int main(){set<int> s;set<int>::const_iterator iter;set<int>::iterator first;set<int>::iterator second;for(int i = 1 ; i <= 10 ; ++i){s.insert(i);}//第一种删除s.erase(s.begin());//第二种删除first = s.begin();second = s.begin();second++;second++;s.erase(first,second);//第三种删除s.erase(8);cout<<"删除后 set 中元素是 :";for(iter = s.begin() ; iter != s.end() ; ++iter){cout<<*iter<<" ";}cout<<endl;return 0;}


查找操作:
第一种方法是用find()
int main(){set<int> s;int n,x;cin>>n;s.insert(3); s.insert(4); s.insert(5);set<int>::iterator i;i=s.find(4);if(i==s.end())cout<<"Not Found!"<<endl;else cout<<*it<<endl;return 0;}//输出:4
第二种方法是用count(),count是计数的,存在返回1,不存在返回0(S中插入1,2,3)
int cnt = S.count(3);cout<<cnt<<endl;//输出1cnt = S.count(5);cout<<cnt<<endl;//输出0


遍历操作:
set<int>::iterator it; //定义前向迭代器  //中序遍历集合中的所有元素  for(it = s.begin(); it != s.end(); it++)  {      cout << *it << " ";  }  cout << endl;  

set<int>::reverse_iterator rit; //定义反向迭代器//反向遍历集合中的所有元素  for(rit = s.rbegin(); rit != s.rend(); rit++)  {      cout << *rit << " ";  }  cout << endl;  
multiset:
multiset中允许有重复元素。

其他操作:
c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器
c++ stl容器set成员函数:clear()--清除所有元素
c++ stl容器set成员函数:count()--返回某个值元素的个数
c++ stl容器set成员函数:empty()--如果集合为空,返回true
c++ stl容器set成员函数:end()--返回指向最后一个元素的迭代器
c++ stl容器set成员函数:equal_range()--返回集合中与给定值相等的上下限的两个迭代器
c++ stl容器set成员函数:erase()--删除集合中的元素
c++ stl容器set成员函数:find()--返回一个指向被查找到元素的迭代器
c++ stl容器set成员函数:get_allocator()--返回集合的分配器
c++ stl容器set成员函数:insert()--在集合中插入元素
c++ stl容器set成员函数:lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
c++ stl容器set成员函数:key_comp()--返回一个用于元素间值比较的函数
c++ stl容器set成员函数:max_size()--返回集合能容纳的元素的最大限值
c++ stl容器set成员函数:rbegin()--返回指向集合中最后一个元素的反向迭代器
c++ stl容器set成员函数:rend()--返回指向集合中第一个元素的反向迭代器
c++ stl容器set成员函数:size()--集合中元素的数目
c++ stl容器set成员函数:swap()--交换两个集合变量
c++ stl容器set成员函数:upper_bound()--返回大于某个值元素的迭代器
c++ stl容器set成员函数:value_comp()--返回一个用于比较元素间的值的函数

参考:http://www.tuicool.com/articles/EnIZV3z




原创粉丝点击