STL中set和multiset小结
(1)使用set/multiset之前必须包含头文件<set>:#include<set> (2)namespace std{ template <class T, class Compare = less<T>, class Allocator = allocator<T> > class set; template <class T, class Compare = less<T>, class Allocator = allocator<T> > class multiset; } 只要是assignable、copyable、comparable的型别T都可以成为set或multiset的元素型别。 set/multiset的排序准则必须是strict weak ordering其意义是:1必须是反对称的,对判断式op而言,如果op(x,y)为真则op(y,x)为假。2必须是可传递的,如果op(x,y)为真且op(y,z)为真则op(x,z)。3必须是非自反的,op(x,x)永远为假。 (3)set/multiset通常都是以平衡二叉树来实现的,事实上set/multiset的实现版本大多以红黑树来实现,它保证节点安插时最多只会做两个重新连接动作,而且到达某一元素的最长路径最多只是最短路径深度的两倍。 (4)set/multiset的操作函数: set c 产生一个空set/multiset set c(op) 以op为排序准则产生一个空set/multiset set c1(c2) 产生某一个set/multiset的副本 set c(beg, end) 以区间[beg, end)内的元素产生一个set/multiset set c(beg, end, op) 以op为排序准则,以区间[beg, end)内的元素产生一个set/multiset c.~set() 销毁所有元素,释放内存 其中set可为下列形式:set<Elem>、set<Elem, op>、multiset<Elem>、multiset<Elem, op> c.size() 返回当前的元素数量 c.empty() 判断c是否为空 c.max_size() 返回可容纳的元素最大数值 c1 compare c2 compare可为==,!=,<,>,<=和>= c.count(elem) 返回“元素值为elem”的元素个数 c.find(elem) 返回“元素值为elem”的第一个元素的迭代器,如果找不到就返回end() c.lower_bound(elem) 返回elem的第一个可安插位置,也就是“元素值>=elem”的第一个元素位置 c.upper_bound(elem) 返回elem的最后一个可安插位置,也就是“元素值>elem”的第一个元素位置 c.equal_range(elem) 返回elem的第一个和最后一个位置,也就是“元素值==elem”的第一个元素区间,返回值为将lower_bound()和upper_bound()的返回值做成一个pair返回 c1 = c2 将c2全部元素赋值给c1 c1.swap(c2) 将c1和c2元素互换 c.begin() 返回一个双向存取迭代器(将元素视为常数),指向第一个元素 c.end() 返回一个双向存取迭代器(将元素视为常数),指向最后元素的下一个位置 c.rbegin() 返回一个逆向迭代器,指向逆向迭代的第一个元素 c.rend() 返回一个逆向迭代器,指向逆向迭代的最后元素的下一个位置 c.insert(elem) 插入一个elem副本并返回新元素的位置 c.insert(it, elem) 安插elem副本返回新元素的位置(it是一个提示指出安插操作的搜寻起点) c.insert(beg, end) 插入区间[beg, end)内的所有元素副本,无返回值 c.erase(elem) 移除“与elem相等”的所有元素,返回被移除元素的个数 c.erase(it) 移除it位置上的元素,无返回 c.erase(beg, end) 移除[beg, end)区间内的所有元素,无返回 c.clear() 将容器清空 set提供如下接口: pair<iterator, bool> insert(const value_type& elem); pair结构中的second成员表示安插是否成功;first成员返回新元素的位置或返回现存的同值元素位置 iterator insert(iterator pos_hint, const value_type& elem); multiset提供如下接口: iterator insert(const value_type& elem); iterator insert(iterator pos_hint, const value_type& elem);STL中set和multiset小结的更多相关文章
- STL中的set/multiset小结
(1)使用set/multiset之前必须包含头文件<set>:#include<set> (2)namespace std{ template <class T, cl ...
- STL中 set 和 multiset
1. 所在头文件: <set>, 命名空间: std ; 声明如下: namespace std{ template <class T, class Compare = less&l ...
- STL中的map/multimap小结
(1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)n ...
- STL中的set容器的一点总结
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- 【转】 STL中的set容器的一点总结
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- (转)STL中set的用法
转载自here 1.关于set map容器是键-值对的集合,好比以人名为键的地址和电话号码.相反地,set容器只是单纯的键的集合.例如,某公司可能定义了一个名为bad_checks的set容器,用于记 ...
- STL中的set容器的一点总结(转)
STL中的set容器的一点总结 1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂 ...
- STL中的set使用方法详细!!!!
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- STL中的set容器的一点总结2
http://blog.csdn.net/sunshinewave/article/details/8068326 1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像 ...
随机推荐
- 关于JS、JQ首行首列固定展示
当时遇见这个问题 是医院手麻系统大批量数据展示,由于是旧项目系统没有使用到前端的架构 只能使用JQ,JS, css完成 也谢谢给予我支持的同行们 固定首行数据: 采用函数的方式进行 JQ /** * ...
- 【Sublime】设置显示编码格式
Mac 上的 Sublime 显示编码格式,设置方法: 右下角显示的 UTF-8 就是当前的编码格式. 添加如下代码: { "font_size": 18, // Display ...
- 【POJ - 3104 】Drying(二分)
Drying 直接上中文 Descriptions 每件衣服都有一定单位水分,在不使用烘干器的情况下,每件衣服每分钟自然流失1个单位水分,但如果使用了烘干机则每分钟流失K个单位水分,但是遗憾是只有1台 ...
- pod指定node运行
1.给node打上label kubectl label nodes cn-hongkong.i-j6c5pm0b59y9kaos565o apptype=monitoring 2.查看结果kubec ...
- 【Java例题】3.2字符图形
2.输出以下字符图形. 比如,当n=6时,结果如下: 1 2 2 2 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 6 6 再比如,当n=7时,结果如下: 1 2 2 2 3 3 3 3 ...
- 深入剖析 RabbitMQ —— Spring 框架下实现 AMQP 高级消息队列协议
前言 消息队列在现今数据量超大,并发量超高的系统中是十分常用的.本文将会对现时最常用到的几款消息队列框架 ActiveMQ.RabbitMQ.Kafka 进行分析对比.详细介绍 RabbitMQ 在 ...
- Unbutu在VMWare中挂载共享文件夹
第一,安装VMTools,步骤自行搜索,安装成功后重启虚拟机. 第二,重启后,在虚拟机管理页面设置共享目录,选择总是启用,开启虚拟机. 第三,在终端进入挂载目录cd /mnt/hgfs/,通过命令su ...
- React躬行记(13)——React Router
在网络工程中,路由能保证信息从源地址传输到正确地目的地址,避免在互联网中迷失方向.而前端应用中的路由,其功能与之类似,也是保证信息的准确性,只不过来源变成URL,目的地变成HTML页面. 在传统的前端 ...
- 机器学习中的误差 Where does error come from?
误差来自于偏差和方差(bias and variance) 对于随机变量 X,假设其期望和方差分别为 μ 和 σ2.随机采样 N 个随机变量构成样本,计算算术平均值 m,并不会直接得到 μ (除非 ...
- C++学习想法
今天是周一,今天做早操的时候舍友说准备买一本C++基础的书.我觉得这样的想法很好,突然想到自己最近几天因为自己私人原因事情很忙,蛋这不能成为我不学C++的理由.所以我在这规划了我这一周的学习进程.首先 ...