stl学习(二)集合 set 的使用
来源:互联网 发布:2016中国服装出口数据 编辑:程序博客网 时间:2024/06/13 13:22
- set集合容器底层由红黑树实现,是平衡二叉搜索树。
- 相对stl中的list、deque效率更高。
- 注意:由于集合 的 性质,单纯的 set 不允许重复的元素
- 初始化 / 清空 函数 : clear()
- 插入 / 添加 函数:insert(x) (插入键值x到集合中)
- 插入 / 添加 函数:insert(iterator,iterator) (插入迭代器之间的元素到集合中)
- 检索 / 查找 函数:find(x) (查找键值为x的元素,若存在,则返回键值的迭代器位置,否则返回集合最后一个元素的下一个位置)
- 删除 函数:erase(x) (删除键值为x的元素)
- 删除 函数:erase(iterator) (删除迭代器位置的元素)
- 删除 函数:erase(iterator,iterator) (删除迭代器之间的值)
- 累计 函数:count(x)(用来查找集合中某个元素是否出现过,只返回1或0)
- 类似二分查找 函数:equal_range(x)(返回第一个大于或等于键值的迭代器 和 第一个大于键值的迭代器)
#include <set>#include <iterator>#include <iostream>#include <algorithm>using namespace std;typedef set<int> S;S s;int n;int main(){cin>> n;for( int i = 0 ; i < n ; i++ ){int x;cin>> x;s.insert( x );}pair< S::const_iterator,S::const_iterator > pr;int y;cin>> y;pr = s.equal_range( y );cout<< *pr.first << *pr.second <<endl;return 0;}怎样更加灵活地使用set?
》》》
1.灵活使用关键字排序
※若集合元素不是结构体是单纯的变量类型,用结构体重载()运算符
#include <set>#include <vector>#include <iterator>#include <iostream>#include <algorithm>using namespace std;struct cmp{bool operator () ( const int &a,const int &b ){return a>b;}};typedef set<int,cmp> S;int n;S s;int main(){cin>> n;for( int i = 0 ; i < n ; i++ ){int x;cin>> x;s.insert( x );}for( S::iterator i = s.begin() ; i != s.end() ; i++ )cout<< *i <<endl;return 0;}※若集合元素为结构体,直接在元素结构体内重载 < 运算符即可
2.灵活使用遍历
※顺序遍历,使用iterator直接遍历即可
set<int> s ;for( set<int>::iterator i = s.begin() ; i != s.end() ; i++ );※反序遍历,使用reverse_iterator
set<int> s ;for( set<int>::reverse_iterator i = s.rbegin() ; i != s.rend() ; i++ )
- set的遍历是高效的中序遍历,也就是说iterator的++和--就可以直接得到其前驱和后继
1 0
- stl学习(二)集合 set 的使用
- STL学习(二)set容器学习
- Set集合TreeSet学习(Set集合学习二)
- STL 集合(set)
- STL---Set(集合)
- STL模板库的学习之集合(set)
- STL优先级队列(priority_queue)和集合(set)的使用
- C++集合操作,使用STL的set容器
- C++ STL入门教程(6)——set(集合)的使用(附完整程序代码)
- stl set的使用
- STL set的使用
- STL学习笔记-set/multiset容器(集合)
- 具体的集合类(二)Set
- HDU 5058 So easy(STL 集合set的运用)
- STL学习(二)set、map、list、deque简单Demo
- STL学习之路二(set与multiset)
- JAVA学习--集合Set使用
- 集合(下)(Set的学习)
- javascript学习——订阅发布抽象类
- 使用 Spring HATEOAS 开发 REST 服务
- hdu ---2040做题笔记(c++)
- Java中的枚举详解
- 网络请求错误状态码
- stl学习(二)集合 set 的使用
- windows下git服务器搭建及常见问题
- Android-ProductFavorl 多变种多渠道打包
- should be mapped with insert="false" update="false" 解决办法
- js判断访问是电脑,安卓,苹果手机
- github ssh key
- l线程中 CreateEvent 和 SetEvent及WaitForSingleObject的两种用法
- ZCMU1551
- Linux+AS Android源码apk的Robotium自动化测试