set的相关操作
来源:互联网 发布:铝材下料软件 编辑:程序博客网 时间:2024/06/10 16:47
#include <cstdio>#include <set>#include <iostream> using namespace std;struct myComp{bool operator ()(const int&a,const int& b){return a>b;}};int main(int argc, char *argv[]){set<int,myComp> s;s.insert(8);s.insert(1);s.insert(12);s.insert(6);s.insert(8);set<int>::iterator it;for(it=s.begin();it!=s.end();it++)//中序遍历; cout<<*it<<" ";cout<<endl;set<int,myComp>::iterator jiao;for(jiao=s.begin();jiao!=s.end();jiao++)//定义向前迭代器; cout<<*jiao<<" ";cout<<endl;set<int>::iterator zh;zh=s.find(8); if(zh!=s.end()) cout<<*zh<<endl;//元素检索; set<int,myComp>::reverse_iterator rit;for(rit=s.rbegin();rit!=s.rend();rit++)//反向遍历; cout<<*rit<<" ";cout<<endl;s.erase(6);s.erase(8);set<int>::reverse_iterator in;for(in=s.rbegin();in!=s.rend();in++)//元素删除; cout<<*in<<" ";cout<<endl;return 0;}
注:
set集合容器实现了红黑树的平衡二叉检索树的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树根节点的键值;另外,还得确保根节点左子树的高度与右子树的高度相等,这样,二叉树的高度最小,从而检索速度最快。要注意的是,它不会重复插入相同键值的元素,而采取忽略处理。
平衡二叉检索树的检索使用中序遍历算法,检索效率高于vector,deque和list等容器。另外,采用中序遍历算法可将键值从小到大遍历出来,所以,可以理解为平衡二叉检索树在插入元素时,就会自动将元素键值由小到大顺序排列。
对于set容器的键值,不可直接修改。以为如果把容器中的一个键值修改了,set容器会根据新的键值旋转子树,以保持新的平衡,这样修改的键值很可能就不在原先那个位置上了,换句话来说,构造set集合的主要目的就是为了快速检索。
与multiset唯一不同的是,后者可以插入重复元素键值插入。
0 0
- set的相关操作
- set相关操作源码
- Collection、List、Set和Map的相关操作的区别
- PHP操作Redis LIST ,SET, HASH 的相关命令 (一)
- PHP操作Redis LIST ,SET, HASH 的相关命令 (一)
- PHP操作Redis LIST ,SET, HASH 的相关命令 (一)
- Linq的Set操作
- set的基本操作
- Redis的set操作
- Redis的Set操作
- PHP操作Redis 有序集(Sorted Set) 的相关命令 (三)
- JAVAWEB开发之redis学习(四)——Set集合相关的操作命令
- PHP操作Redis 有序集(Sorted Set) 的相关命令 (三)
- Delphi的set集合操作
- scala对Set的操作
- STL set的基本操作
- Set集合的基本操作
- python:集合set的操作
- 成功 我 需要 你
- JavaScript--事件对象
- 使用ajax gson增强用户体验
- 第一个项目(八)碰撞检测
- MyBatis 2章 MyBatis与Spring整合
- set的相关操作
- MyBatis 3章 MyBatis Spring Struts2 整合应用
- bitset相关操作
- 交换机灯全解
- 电脑运行命令
- iPhone/Mac Objective-C内存管理教程和原理剖析
- 电脑故障报警
- BIOS设置中英文对照表
- 电脑如何重装系统