STL set的总结
2015-09-17 22:23
232 查看
通过红黑树实现的set能够在log2n (n为set中的节点数)的时间内完成插入、查找、删除的数据结构。
以整数集合为例
首先是set的修改操作
1、set的插入通过set::insert()
2、set的删除
3、set的清空操作
4、set中的查找
然后我们可以通过这里面的操作完成求前驱和后继
以整数集合为例
set<int> S;
首先是set的修改操作
1、set的插入通过set::insert()
S.insert(key);
然后键值key被插入到S中。
2、set的删除
//c++支持一下三种删除方式 S.erase(key); //删除一个值,如果没有就无操作 S.erase(S.find(key));//删除迭代器代表的值,若果没有,就会删除S.end(),会导致在遍历set的时候无法终止。 S.erase(S.lower_bound(key1), S.lower_bound(key2));//删除[key1,key2)之内的所有值。
3、set的清空操作
S.clear();
4、set中的查找
S.find(key); //返回迭代器 S.count(key); //返回1或0,表示是存在key S.lower_bound(key); //返回第一个大于等于key的迭代器 S.upper_bound(key); //返回第一个大于key的迭代器 S.equal_range(key); //返回一个pair<set::iterator, set::iterator> 分别是S.lower_bound(key)和S.upper_bound(key)的返回值。
然后我们可以通过这里面的操作完成求前驱和后继
iter=S.upper_bound(x);//求得x的后继 iter=S.lower_bound(x);iter--;//求得x的前驱。但是注意iter==S.begin()时没有前驱。iter --后仍为iter
相关文章推荐
- STL set的总结
- 服务项 开机启动设置
- iOS激情详解之json解析
- 修改应用程序图标和app名称
- Ossimplanet编译笔记(VS2008)
- 关于编码的小知识
- 根据父节点,返回其子节点
- 如何根据父级元素进行相对定位
- html5常见的表单元素
- 如何搭建ssh项目(基于注解)
- [Android Pro] sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别
- ViewPager欢迎界面
- 简易摄影棚
- 面向对象 第八课 接口
- Android第八讲——多媒体(三) 录制音频MediaRecorder
- Path,贝塞尔曲线,BitMap(位图), PorterDuffXfermode
- 关于C语言中数据类型的转化方式
- python--set
- Jmeter调试工具---Debug Sampler
- ES6详解四: WeakMap