三天STL与pbds(平板电视)
19.02.11 ~ 19.02.13
hjmmm要专攻STL辣
先列一下大纲?
- 第一天:各种基础容器
- 第二天:实现平衡树和平板电视pbds
- 第三天:非变异算法和变异算法
那么我们就开始吧!
Day1
【各种基础容器】
还是先列一下小目录
- vector
- deque
- list
- queue & stack
- priority_queue
- biset
- 集合 set
- 映射 map
分类
| 种类 | 名称 |
|---|---|
| 序列性容器 (可以用链表模拟的那种) | vector, deque, list |
| 关联性容器 (可以用平衡树模拟的那种) | set, map, multiset, multimap |
| 容器适配器(可以用数组模拟的那种) | stack, queue |
基本每个容器都会有的又
比较常用的函数
| 函数名 | 函数类型 | 意义 |
|---|---|---|
| .empty() | bool | 没有元素返回true |
| .size() | int | 元素个数 |
| .max_size() | int | 最大元素个数 |
| = | operator | 将一个容器赋给另一个容器 |
| swap | void | 交换两个容器的元素 |
| .begin() | iterator | 返回第一个元素 |
| .end() | iterator | 返回最后一个元素后面的元素 |
| .erase(xxx) | void | 清除一个元素或几个元素 |
| .clear() | void | 清空所有元素 |
头文件要求
基本上都是 #include <容器名>
好啦现在分别突破!
vector & deque & list
共有的函数
小声:我一直不知道insert函数返回的那个迭代器是什么。。
知道的大佬麻烦在评论指导一下qvq感恩不尽
另外我没写构造函数因为蒟蒻一般不用。。
| 函数名 | 函数类型 | 意义 |
|---|---|---|
| .insert(iterator it, const T& x) | iterator | 在it所指那个元素前加一个x元素 |
| .insert(iterator it, int n, const T& x) | void | 在it所指那个元素前加n个x元素 |
| .insert(iterator it, const_iterator first, const_iterator end) | void | 在it所指那个元素前加入另一个同类型容器[first, last)之间的数据 |
| .push_back(const T& x) | void | 尾部增加元素x |
| .push_front(const T& x) (只有deque,list可以用) | void | 首部增加元素x |
| .erase(iterator it) | iterator | 删除it所指元素 |
| .erase(iterator first, iterator last) | iterator | 删除[first, last)之间的元素 |
| .pop_back() | void | 容器不为空时,删除最后一个元素 |
| .pop_front() (只有deque,list可以用) | void | 容器不为空时,删除第一个元素 |
| .front() | reference(引用) | 首元素引用 |
| .back() | reference | 尾元素引用 |
| .assign(int n, const T& x) | void | 设置容器大小为n每个元素为x |
| .assign(const_iterator first, const_iterator last) | void | 设置容器有且只有[first, last)中的元素 |
deque,vector貌似没有什么别的常用操作了。。
但list还有好多、
函数名 | 函数类型 | 意义
------|----- | -----
.remove(const T& x) | void | 删除元素值等于x的元素
.sort() | void | 排序(默认升序)
.unique() | void | 去重
.reverse() | void | 反转顺序
.splice(iterator it, list& x) | void | 将x中所有元素移入当前list的it元素前
.splice(iterator it, list& x, iterator first) | void | 将x中[first, end)元素移入当前list的it元素前
.splice(iterator it, list& x, iterator first, iterator last) | void | 将x中[first, last)元素移入当前list的it元素前
.merge(list& x) | void | 将x与当前list合并(不同于splice的是, 两序列若各自升序,合并完还是升序)
需要注意的是
- 对任何位置的插入和删除 list永远是常数时间
- vector容量翻倍开,容易炸哦
- vector随机位置插入删除元素比较慢
- deque随机位置操作是线性时间
- list随机位置插入较快 但不支持随机访问
stack & queue & priority_queue
这个大家都跟熟悉啦~
共有的函数
| 函数名 | 函数类型 | 意义 |
|---|---|---|
| .push(const T& x) | void | 插入元素(队尾or栈顶) |
| .pop() | void | 删除元素(队尾or栈顶) |
各自的
- 队首
.front() - 队尾
.back() - 栈顶或优先队列堆顶
.top()
返回值都是reference哦
bitset
三天STL与pbds(平板电视)的更多相关文章
- [洛谷日报第39期]比STL还STL?——pbds
[洛谷日报第39期]比STL还STL?——pbds 洛谷科技 发布时间:18-08-3116:37 __gnu_pbds食用教程 引入 某P党:“你们C++的STL库真强(e)大(xin),好多数 ...
- 《N诺机试指南》(三)STL使用
1.vector 2.queue 3.stack 4.map 5.set 6.多组输入输出问题 详解见代码以及注释: //学习STL的使用 #include <bits/stdc++.h> ...
- 疯子的算法总结(三) STL Ⅱ迭代器(iterator) + 容器
一.迭代器(Iterator) 背景:指针可以用来遍历存储空间连续的数据结构,但是对于存储空间费连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历. 定义:迭代器是一种检查容器内元素 ...
- 跟我学STL系列(1)——STL入门介绍
一.引言 最近这段时间一直都在自学C++,所以这里总结下自己这段时间的学习过程,通过这种方式来巩固自己学到的内容和以备后面复习所用,另外,希望这系列文章可以帮助到其他自学C++的朋友们. 由于本人之前 ...
- STL 之 空间配置器(allocator)
一.SGI 标准的空间配置器,std::allocator SGI也定义了一个符合部分标准,名为allocator的配置器,但是它自己不使用,也不建议我们使用,主要原因是效率不佳. 它只是把C++的操 ...
- STL基础知识
一,STL的组成 1.什么是STL STL(Standard Template Library)标准模板库的简称,是由惠普开发的一系列软件的总称,STL现在是C++的一部分,已经被构建于编译系统之内, ...
- 咬碎STL空间配置器
STL空间配置器 一.开场白: 给我的感觉就是,了解是空间配置器的功能,是那么的明了:在看原理,我还是很开心:接下来是360度大转变: 那么长的变量或者函数命名.那么多的宏.不爽,不过,遇上我这种二货 ...
- C++_标准模板库STL概念介绍4-算法
STL包含很多处理容器的非成员函数: sort() copy() find() random_shuffle() set_union() set_intersection() set_differen ...
- 论C++STL源代码中关于堆算法的那些事
关于堆,我们肯定熟知的就是它排序的时间复杂度在几个排序算法里面算是比較靠上的O(nlogn)常常会拿来和高速排序和归并排序讨论,并且它还有个长处是它的空间复杂度为O(1), 可是STL中没有给我们提供 ...
随机推荐
- 写了一个Windows API Viewer,提供VBA语句的导出功能。提供两万多个API的MSDN链接内容的本地查询
始出处:http://www.cnblogs.com/Charltsing/p/APIViewer.html QQ:564955427,QQ群:550672198 世面上的API Viewer已经不少 ...
- <iOS开发>之App上架流程(2017)
本文主要介绍了App上架流程,以及上架过程中会遇到的一些问题. 一.App上架前的准备. 上架前,需要开发人员有苹果开发者账号,具体请阅读苹果开发者账号注册申请流程.本文是在已经拥有开发者账号的前提下 ...
- p57商环
1.半群满足对乘法封闭吗? 2.理想I 又不是R的子群,为什么I是R的正规子群呢? 3.~为什么对加法是同余关系? 4. 属于R,b-b属于I,为什么R作用在I上面,还属于I呢? 1.封闭 2.理想I ...
- Nagios 系统监控
Nagios 系统监控 Nagios 是一款免费的开源 IT 基础设施监控系统,功能强大,灵活性强,能有效监控 Windows.Linux.VMware 和 Unix 主机状态,交换机.路由器等网络设 ...
- 【学习总结】Git学习-参考廖雪峰老师教程十-自定义Git
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【转】linux下查看磁盘分区的文件系统格式
https://www.cnblogs.com/youbiyoufang/p/7607174.html
- React-Native之截图组件view-shot的介绍与使用
React-Native之截图组件view-shot的介绍与使用 一,需求分析 1,需要将分享页生成图片,并分享到微信好友与朋友圈. 二,react-native-view-shot介绍 1,可以截取 ...
- asp.net core前后端分离
陆陆续续的看了两个礼拜的前端知识,把vue+vue-router+axios的知识撸了一遍,本来想加个element-ui来实现一下前后端分离,实施的时候却遇到了很多的坑.我本身不在一个软件开发公司上 ...
- Windows NT 的历史
Windows NT 的版本历史 https://blog.csdn.net/flyingpig2016/article/details/53282895/ 按照自己找到的资料:windows NT ...
- [转帖]Docker的daemon.json的作用
Docker(十六)-Docker的daemon.json的作用 https://www.cnblogs.com/zhuochong/p/10070434.html jfrog 培训的时候 说过这个地 ...
[洛谷日报第39期]比STL还STL?——pbds 洛谷科技 发布时间:18-08-3116:37 __gnu_pbds食用教程 引入 某P党:“你们C++的STL库真强(e)大(xin),好多数 ...
1.vector 2.queue 3.stack 4.map 5.set 6.多组输入输出问题 详解见代码以及注释: //学习STL的使用 #include <bits/stdc++.h> ...
一.迭代器(Iterator) 背景:指针可以用来遍历存储空间连续的数据结构,但是对于存储空间费连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历. 定义:迭代器是一种检查容器内元素 ...
一.引言 最近这段时间一直都在自学C++,所以这里总结下自己这段时间的学习过程,通过这种方式来巩固自己学到的内容和以备后面复习所用,另外,希望这系列文章可以帮助到其他自学C++的朋友们. 由于本人之前 ...
一.SGI 标准的空间配置器,std::allocator SGI也定义了一个符合部分标准,名为allocator的配置器,但是它自己不使用,也不建议我们使用,主要原因是效率不佳. 它只是把C++的操 ...
一,STL的组成 1.什么是STL STL(Standard Template Library)标准模板库的简称,是由惠普开发的一系列软件的总称,STL现在是C++的一部分,已经被构建于编译系统之内, ...
STL空间配置器 一.开场白: 给我的感觉就是,了解是空间配置器的功能,是那么的明了:在看原理,我还是很开心:接下来是360度大转变: 那么长的变量或者函数命名.那么多的宏.不爽,不过,遇上我这种二货 ...
STL包含很多处理容器的非成员函数: sort() copy() find() random_shuffle() set_union() set_intersection() set_differen ...
关于堆,我们肯定熟知的就是它排序的时间复杂度在几个排序算法里面算是比較靠上的O(nlogn)常常会拿来和高速排序和归并排序讨论,并且它还有个长处是它的空间复杂度为O(1), 可是STL中没有给我们提供 ...
始出处:http://www.cnblogs.com/Charltsing/p/APIViewer.html QQ:564955427,QQ群:550672198 世面上的API Viewer已经不少 ...
本文主要介绍了App上架流程,以及上架过程中会遇到的一些问题. 一.App上架前的准备. 上架前,需要开发人员有苹果开发者账号,具体请阅读苹果开发者账号注册申请流程.本文是在已经拥有开发者账号的前提下 ...
1.半群满足对乘法封闭吗? 2.理想I 又不是R的子群,为什么I是R的正规子群呢? 3.~为什么对加法是同余关系? 4. 属于R,b-b属于I,为什么R作用在I上面,还属于I呢? 1.封闭 2.理想I ...
Nagios 系统监控 Nagios 是一款免费的开源 IT 基础设施监控系统,功能强大,灵活性强,能有效监控 Windows.Linux.VMware 和 Unix 主机状态,交换机.路由器等网络设 ...
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
https://www.cnblogs.com/youbiyoufang/p/7607174.html
React-Native之截图组件view-shot的介绍与使用 一,需求分析 1,需要将分享页生成图片,并分享到微信好友与朋友圈. 二,react-native-view-shot介绍 1,可以截取 ...
陆陆续续的看了两个礼拜的前端知识,把vue+vue-router+axios的知识撸了一遍,本来想加个element-ui来实现一下前后端分离,实施的时候却遇到了很多的坑.我本身不在一个软件开发公司上 ...
Windows NT 的版本历史 https://blog.csdn.net/flyingpig2016/article/details/53282895/ 按照自己找到的资料:windows NT ...
Docker(十六)-Docker的daemon.json的作用 https://www.cnblogs.com/zhuochong/p/10070434.html jfrog 培训的时候 说过这个地 ...