C++ STL之set
来源:互联网 发布:linux启动进程的命令 编辑:程序博客网 时间:2024/06/04 19:21
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。
平衡二叉检索树使用中序遍历算法,检索效率高于vector、deque和list等容器,另外使用中序遍历可将键值按照从小到大遍历出来。
构造set集合主要目的是为了快速检索,不可直接去修改键值。
常用操作:
2.中序遍历:类似vector遍历(用迭代器)
set<int> s;set<int>::iterator it;for(it=s.begin();it!=s.end();it++)
3.反向遍历:利用反向迭代器reverse_iterator。
例:
set<int> s;set<int>::reverse_iterator rit;for(rit=s.rbegin();rit!=s.rend();rit++)
5.元素检索:find(),若找到,返回该键值迭代器的位置,否则,返回最后一个元素后面一个位置。
set<int> s;set<int>::iterator it;it=s.find(5); //查找键值为5的元素if(it!=s.end()) //找到 cout<<*it<<endl;else //未找到 cout<<"未找到";
6.自定义比较函数
(1)元素不是结构体:
例:
//自定义比较函数myComp,重载“()”操作符struct myComp{ bool operator()(const your_type &a,const your_type &b) { return a.data-b.data>0; }}set<int,myComp>s;set<int,myComp>::iterator it;
(2)如果元素是结构体,可以直接将比较函数写在结构体内。
例:
struct Info{ string name; float score; //重载“<”操作符,自定义排序规则 bool operator < (const Info &a) const { //按score从大到小排列 return a.score<score; }}set<Info> s;set<Info>::iterator it;
0 0
- C++STL之set
- C++STL之set容器
- C++STL之关联容器【map】【set】
- C++STL之Set集合容器
- [C++::STL]之set的用法
- 【STL】STL之set
- STL模板学习之set容器(C/C++)
- C++--STL---set容器
- stl之set
- STL 应用之set
- STL容器之set
- STL之<set>
- STL之set
- STL之set
- C++ STL之set
- C++ STL 之set
- STL 之 set 集合
- STL之set
- online_judge_1115
- Android proguard 详解
- 复制或克隆虚拟机后无eth0或eth0变eth1
- zxing解析中文符号错误
- 我的第一篇博客
- C++ STL之set
- 如何获取windows剪切板中内容
- 【杭电】[1091]A+B for Input-Output Practice (III)
- Java爬虫被服务器拒绝访问 403错误 学习笔记
- 文章标题
- 多层分布式应用体系结构
- iOS开发之如何跳到系统设置里的各种设置界面
- 【杭电】[1092]A+B for Input-Output Practice (IV)
- OS中处理机调度模型和调度算法