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(平板电视)的更多相关文章

  1. [洛谷日报第39期]比STL还STL?——pbds

    [洛谷日报第39期]比STL还STL?——pbds   洛谷科技 发布时间:18-08-3116:37 __gnu_pbds食用教程 引入 某P党:“你们C++的STL库真强(e)大(xin),好多数 ...

  2. 《N诺机试指南》(三)STL使用

    1.vector 2.queue 3.stack 4.map 5.set 6.多组输入输出问题 详解见代码以及注释: //学习STL的使用 #include <bits/stdc++.h> ...

  3. 疯子的算法总结(三) STL Ⅱ迭代器(iterator) + 容器

    一.迭代器(Iterator) 背景:指针可以用来遍历存储空间连续的数据结构,但是对于存储空间费连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历. 定义:迭代器是一种检查容器内元素 ...

  4. 跟我学STL系列(1)——STL入门介绍

    一.引言 最近这段时间一直都在自学C++,所以这里总结下自己这段时间的学习过程,通过这种方式来巩固自己学到的内容和以备后面复习所用,另外,希望这系列文章可以帮助到其他自学C++的朋友们. 由于本人之前 ...

  5. STL 之 空间配置器(allocator)

    一.SGI 标准的空间配置器,std::allocator SGI也定义了一个符合部分标准,名为allocator的配置器,但是它自己不使用,也不建议我们使用,主要原因是效率不佳. 它只是把C++的操 ...

  6. STL基础知识

    一,STL的组成 1.什么是STL STL(Standard Template Library)标准模板库的简称,是由惠普开发的一系列软件的总称,STL现在是C++的一部分,已经被构建于编译系统之内, ...

  7. 咬碎STL空间配置器

    STL空间配置器 一.开场白: 给我的感觉就是,了解是空间配置器的功能,是那么的明了:在看原理,我还是很开心:接下来是360度大转变: 那么长的变量或者函数命名.那么多的宏.不爽,不过,遇上我这种二货 ...

  8. C++_标准模板库STL概念介绍4-算法

    STL包含很多处理容器的非成员函数: sort() copy() find() random_shuffle() set_union() set_intersection() set_differen ...

  9. 论C++STL源代码中关于堆算法的那些事

    关于堆,我们肯定熟知的就是它排序的时间复杂度在几个排序算法里面算是比較靠上的O(nlogn)常常会拿来和高速排序和归并排序讨论,并且它还有个长处是它的空间复杂度为O(1), 可是STL中没有给我们提供 ...

随机推荐

  1. 如何优化Docker储存

    大家在使用Docker的过程中,有没有想过,Docker在本地存储镜像时把文件存储在哪里了呢?有没有对文件的总大小做一定的限制呢?能不能调整本地存储的位置及总限制大小呢?今天,我们就从这些问题入手,来 ...

  2. MongoDB Redis

    MongoDB Redis设置用户名密码了吗?看看shodan这款邪恶的搜索引擎吧!~   早上看新闻的时候看到了个醒目的新闻 开源中国:MongoDB 赎金事件持续发酵,究竟是谁之过?博客园:Mon ...

  3. YCSB报": No such file or directory"异常

    异常信息如下: 文件路径.权限都没有问题. 上网遍寻无果,安装流程与官网一致,开始怀疑是环境问题,后来用别人能用的YCSB复制到本地,却能正常运行. 后来修改了ycsb文件,加了个空格,保存退出,再运 ...

  4. Bridge (br0) Network on Linux

    动手实践虚拟网络 - 每天5分钟玩转 OpenStack(10) - CloudMan - 博客园https://www.cnblogs.com/CloudMan6/p/5296573.html li ...

  5. 【Python3练习题 019】 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

    后一个分数的分子=前一个分数的分子+分母,后一个分数的分母=前一个分数的分子,循环个20次就有结果.注意,假设分子为a,分母为b,虽然 a = a + b, 但此时a已经变成 a+b 了,所以再给b重 ...

  6. Git命令以及常见注意事项

    命令: git init -> 初始化一个git仓库 git clone -> 克隆一个本地库 git pull -> 拉取服务器最新代码 git fetch –p -> 强行 ...

  7. Eclipse的一个“bug”

    标题之所以打上双引号,是因为暂时不知道怎么确定. 一个 .java文件里有两个类:public Bath:Soap.它们都有一个main()方法. 从命令行单独访问任意一个类的main()方法,都没毛 ...

  8. java使用顺序存储实现队列

    详细连接  https://blog.csdn.net/ljxbbss/article/details/78135993 操作系统:当电脑卡的时候,如果不停点击,还是卡死,最后终于电脑又好了以后,操作 ...

  9. python web需要了解哪些

    1. socket.tcp/ip.http(cookie.session.token).https.ssl 2. wsgi:https://www.python.org/dev/peps/pep-33 ...

  10. h.264并行熵解码

    在前面讨论并行解码的章节中,我们专注于讨论解码的宏块重建部分,甚至把宏块重建描述成宏块解码,这是因为在解码工作中,宏块重建确实占了相当大的比重,不过解码还包含其它的部分,按照解码流程可粗略分为: 读取 ...