【学习笔记】 关于 Set 和 Multiset
来源:互联网 发布:软件到期时间破解 编辑:程序博客网 时间:2024/06/15 19:50
首先要使用他们 先要包括:
#include <set>
Set和Multiset会根据特定的排序准则将插入其中的元素排序,区别是Set不允许重复元素,Multiset允许。
他们的定义在头文件中的是这样的:
template< typename _Key, //数据类型 typename _Compare = std::less<_Key>, // 排序方法 默认是以 < 排序 typename _Allocator = std::allocator<_Key> //内存定义模型(默认就好 现在还没发觉有什么用) >;
他们通常以平衡二叉树的形式存储数据,这样操作的时间就会减少一点,但这样就造成了加入到这之中的元素加入之后就再不能修改元素值,想要改变值只能删除旧的,加入新的。
但这不是我们所关心的。
重点是怎么用!!!
以下事例都以整型为例,Set和Multiset是一样的,我们用Set举例。
1、构造与析构
set <int> s; //产生一个空的set,不含任何元素set <int> s (op) //产生一个空的set,以op为排序准则,不含任何元素set <int> s1 (s2) //产生set s1,是s2的副本set <int> s(beg,end)//产生set s,将迭代器beg到end的元素插入s~set(); //销毁s
2、非变动性操作
对于Set和Multiset来说 '==','!=','<','>','<=','>='是可以用的
s.size() //返回容器的大小,整型值s.empty() //判断容器是否为空
3、搜寻函数
自带的搜寻函数效率非常高,都是对数级别的。
s.count(elem) //返回元素值为“elem”的元素的个数s.find(elem) //返回元素值为“elem”的第一个元素的迭代器,如果没找到返回end();s.lower_bound(elem) //返回元素的第一个可安插位置 返回的是迭代器s.upper_bound(elem) //返回元素的最后一个可安插位置 返回的是迭代器s.equal_range(elem) //返回元素的可安插区间 pair类型
4、操作函数
s.begin() //返回一个迭代器,指向第一个元素s.end() //返回一个迭代器,指向最后一个元素的下一个位置s.insert(p,elem) //在位置p之后搜索插入一个元素elem,返回新元素位置,p可以没有s.insert(beg,end) //将区间beg到end的所有元素插入到s,s.erase(elem) //移除s中所有与elem相等的元素,返回移除的元素个数s.erase(p) //移除p指向的元素s.erase(beg,end) //移除beg到end之间的所有元素s.clear() //清空s
- 【学习笔记】 关于 Set 和 Multiset
- c++ STL set和multiset 学习笔记
- set和multiset 学习
- STL set、multiset 学习笔记
- STL学习笔记----5.容器 set 和 multiset
- STL学习笔记----5.容器 set 和 multiset
- 【学习笔记】C++高级程序设计:STL:Set 和 Multiset
- STL学习笔记— —容器set和multiset
- STL学习笔记7— —容器set和multiset
- STL学习笔记-set/multiset容器(集合)
- 关于set/multiset和map/multimap总结
- STL中的set和multiset学习小记
- std::set和multiset
- set和multiset
- set和multiset容器
- Set和multiset
- STL---set和multiset
- STL set和multiset
- 在MFC中,运用轨迹球算法实现鼠标旋转物体
- 编程中位运算用法总结
- 冒泡排序(工程中很少使用,时间复杂度太差了),linux纯C实现
- 开灯问题
- 如何在一个窗体中调用另一个窗体的控件或方法
- 【学习笔记】 关于 Set 和 Multiset
- java学习
- C/C++中判断某一文件或目录是否存在
- 打开新的浏览器窗口
- 如何调试新设计的PCB电路板
- StringTokenizer类的用法 ----------(捎带split使用)
- java
- 常用服务器模型总结
- 个人关于数据结构的看法