c++ 常用的 STL
c++ 中常用的 STL
vector
//vector 变长数组 倍增的思想(倍增:系统为每一个程序分配空间的时候,所需要的时间和空间大小无关,与请求次数相关)尽量减少请求的次数
/*
返回元素的个数
size()
判断是否为空
empty()
清空
clear()
front() 返回第一个数 back() 返回最后一个数
push_back()/pop_back()
begin() / end()
支持比较运算
*/
pair<类型, 类型>
/*
pair<int ,int> 可以存储一个二元值,前后两个值 的类型可以使任意的
first 是第一个元素 second 是第二个元素
支持比较运算,以first为第一关键字, second为第二关键字
*/
string
/*
string 字符串
substr(m, n) 下标从 m 开始 长度为 n 的子串
s_str()
size()
empty()
clear()
*/
queue priority_queue
/*
queue 队列
push() 向队尾插入一个元素
pop() 弹出队头元素
front() 返回队头元素 back() 返回队尾元素
priority_queue 优先队列
push() 插入一个元素
top() 返回堆顶元素
pop() 弹出堆顶元素
*/
stack
/*
stack 栈
size()
push() 向栈顶插入一个元素
top() 返回栈顶元素
pop() 弹出栈顶元素
*/
deque
/*
deque 双端队列 队头队尾都可以插入删除
size()
clear()
front()
back()
push_back()/pop_back()
push_front()/pop_front()
begin() / end()
*/
set map multiset multimap
/*
公有地
size()
empty()
begin()/end()
-- ++ 前驱后继
set/multiset
find() 查找一个数
insert() 插入一个数
count() 返回某一个数的个数
erase()
1. 输入一个数x 删除所有的 x 时间复杂度 O(k+logn)
2. 输入一个迭代器 , 删除这个迭代器
lower_bound()/upper_bound()
lower_bound() 返回大于等于x的最小的迭代器
upper_bound() 返回大于x最小的迭代器
map multimap
insert() 插入的数是一个pair
erase() 输入的参数时pair 或者迭代器都可以
find()
[] 可以通过下标取到 时间复杂度 O(logn)
lower_bound/upper_bound
unordered_set unordered_map unordered_mulyiset unordered_multimap
哈希表实现,和上面类似, 增删改查的时间复杂度 O(1)
不支持 lower_bound() / upper_bound()
*/
bitset
/*
bitset 压位
bitset<10000> s;
~ & | ^
== !=
[]
count() 返回多少个1 any() 判断是否至少一个1
none() 判断是否为 0
set() 把所有位置置成1
set(k,v) 把第k位改成v
reset() 把所有位置变成0
*/
c++ 常用的 STL的更多相关文章
- 常用的STL查找算法
常用的STL查找算法 <effective STL>中有句忠告,尽量用算法替代手写循环:查找少不了循环遍历,在这里总结下常用的STL查找算法: 查找有三种,即点线面: 点就是查找目标为单个 ...
- 刷题常用的STL容器总结
本文归纳总结刷题常用到STL容器以及一些标准算法,主要包括: string.vector.map.pair.unordered_map.set.queue.priority_queue.stack,以 ...
- c++常用函数STL
完c++快一年了,感觉很有遗憾,因为一直没有感觉到c++的强大之处,当时最大的感觉就是这个东西的输入输出比C语言要简单好写. 后来我发现了qt,opencv,opengl,原来,c++好玩的狠. 在这 ...
- 常用的STL
map 容器和数组一样,不过比较活用,相当于直接离散化数组 map<int ,int>mp 一维int map<string ,string>mp 一维 str ma ...
- STL 一些常用的STL函数(持续更新
先说一下 一边要用到算法的东西一般要加#include<algorithm>头文件 一.栈和队列 1 栈 :一种线性表 特点 后进先出 头文件 #include<stack&g ...
- STL——配接器、常用算法使用
学习STL,必然会用到它里面的适配器和一些常用的算法.它们都是STL中的重要组成部分. 适配器 在STL里可以用一些容器适配得到适配器.例如其中的stack和queue就是由双端队列deque容器适配 ...
- STL常用序列容器
这里简要的记述一下STL常用容器的实现原理,要点等内容. vector vector是比较常用的stl容器,用法与数组是非类似,其内部实现是连续空间分配,与数组的不同之处在于可弹性增加空间,而arra ...
- STL(常用)
STL 简单记录.讲解一些初级阶段常用的用法. STL是C++的一个标准模板库,其中包含了许多在计算机领域常用的基本数据结构以及基本算法.STL主要依赖于模板,使得STL具有广泛的通用性.这篇文章旨在 ...
- Effective STL中文版 译序
<Effective STL中文版>译序 就像本书的前两本姊妹作(Effective C++.More Effective C++)一样,本书的侧重点仍然在于提升读者的经验,只不过这次将焦 ...
- STL 贺习笔记
贺文链接www.cnblogs.com/zhouzhendong/p/STL.html C++ STL 的一些基础用法 前言 创建一个空的 vector ,我一直是这样写的: vector < ...
随机推荐
- 前端学习C语言 - 开篇
前端学习C语言 - 开篇 前端学习C语言有很多理由:工作.兴趣或其他. C 语言几个常见的使用场景: 操作系统开发:Linux 操作系统的内核就是主要由 C 语言编写的.其他操作系统也广泛使用 C 语 ...
- Android strings.xml按照key修改
strings.xml匹配替换 将两个Android项目中的多语言字符串文件(strings.xml)进行比较,如果其中一个项目中包含另一个项目没有的字符,则合并到单一的输出文件,并以 key 在原始 ...
- unity添加Mysql的dll以及发布的问题
最近在做一个unity项目中,要读取数据库,还是MySql的数据库.遇到了很多问题,写出来供大家参考一下. 关于unity引用第三方的Mysql.data.dll的问题: 这个地方有一个难点,正常的C ...
- Java类加载原理中为何要设计双亲委派机制
首先,给大家演示两个示例代码,我们自定义一个与Java核心类库中java.lang.String类名相同的代码: package java.lang; /** * 自定义java.lang.Strin ...
- Spark架构与运行流程
1. 阐述Hadoop生态系统中,HDFS, MapReduce, Yarn, Hbase及Spark的相互关系. 2. Spark已打造出结构一体化.功能多样化的大数据生态系统,请简述Spark生态 ...
- 3. @RequestMapping注解
1. @RequestMapping 注解的功能 @RequestMapping 注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系. SpringMVC 接收到指定的请求 , ...
- OpenCV计算机视觉学习(14)——浅谈常见图像后缀(png, jpg, bmp)的区别(opencv读取语义分割mask的坑)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 本来 ...
- 给SqlSugar一个优化建议
声明:本作者无恶意只是觉得这个功能很不错,平常工作当中经常用到,自己框架也做了相应的支持,本着技术共享目的. 一.对象组合设置列更新支持 建议度:高 业务场景 1.更新列表需统一设置 例如:修改人ID ...
- Java原生图片Base64转码与Base64解码
原文地址 import org.apache.commons.codec.binary.*; import java.io.*; import java.net.*; /** * 将file文件转换为 ...
- C语言基础-结构体基础
文章目录 前言 1.结构体的创建 1.1 第一种方法 1.2 第二种方法 1.3 全局结构体和局部结构体的声明 2.结构体的使用 2.1 局部结构体的声明 & 初始化 2.1.1 指针方法 2 ...