STL 大法好
#include <vector>
1.支持随机访问,但不支持在任意位置O(1)插入;
2.定义:
```cpp
vector<int> a;
```
3.a.size()返回a的长度,a.empty()返回bool型用来判断是否为空; O(1)
4.a.clear()清除a;O(n)
5.a的迭代器是“随机访问迭代器”,可以进行加减运算(O(1));
6.a.begin()返回指向a中第一个元素的迭代器;
7.a.end()返回a中第n个元素的后一位的迭代器;
8.向量vector可以理解为左闭右开;
9.a.front()返回a的第一个元素;
10.a.back()返回a的最后一个元素;
11.a.push_back(x)将元素x插入到vector的尾部;
12.a.pop_back()将最后一个元素弹出该向量;
#include<queue>
1.不支持随机访问;
2.定义:
```cpp
queue<int> q;
priority_queue qu;
```
3.q.push(x)将元素x从队尾入队; O(1)
4.q.pop()将队头元素弹出; O(1)
5.q.front()返回队头元素的值; O(1)
6.q.back()返回队尾元素的值; O(1)
7.qu.push(x)将元素x插入堆; O(log n)
8.qu.pop()删除堆顶元素; O(log n)
9.qu.top()查询堆顶元素 O(log n)
10.qu实现的是大根堆,如果要将其改为小根堆,则要运算符重载或者存入相反数,或者向下面的两条所述利用黑科技更改;
11.大根堆定义:priority_queue< int > pq
12.小根堆定义:priority_queue< int ,vector< int >,greater< int > >pq
13.重载运算符:
```cpp
bool operator < (const rec &x,const rec &y)
{
return x.value>y.value;
}
```
#include <deque>
1.支持[]随机访问; O(1)
2.定义:
```cpp
deque<int> d;
```
3.d.begin()与d.end()与vector的类似; O(1)
4.d.front()与d.back()与vector类似; O(1)
5.d.push_back()从队尾入队; O(1)
6.d.push_front()从队头入队; O(1)
7.d.pop_back()从队尾出队; O(1)
8.d.pop_front()从队头出队; O(1)
9.d.clear()清空队列; O(n)
#include <set>
1.不支持随机访问;
2.定义:
```cpp
set<int> s; //有序集合
multiset<int> ms; //有序多重集合
set<int>::iterator it;
```
3.s.size()与vector一样; O(1)
4.s.empty()与vector一样; O(1)
5.s.clear()与vector一样;
6.s的迭代器是“双向访问迭代器”,仅支持“++”和“--”; O(log n)
7.s.begin(),a.end()与vector一样(注意前闭后开); O(1)
8.s.insert(x)将一个元素x插入到集合s中; O(log n)
9.s.find(x)在s中查找等于x的元素; O(log n)
10.s.lower_bound(x)查找>=x的元素中最小的一个,并返回迭代器; O(log n)
11.s.upper_bound(x)查找>x的元素中最小的一个,并返回迭代器; O(log n)
12.s.erase(it)删除it指向的元素; O(log n)
13.s.erase(x)删除所有等于x的元素 O(k + log n)
14.s.count(x)返回集合s中等于x的元素个数; O(k + log n)
#include <map>
定义:map<key_type,value_type> name;
1.name.size()
2.name.empty();
3.name.clear();
4.name.begin();
5.name.end();
6.name.insert();
7.name.erase();
8.name.find();(返回迭代器)
9.name[];
#include <bitset> (一个多维二进制数)
bitset<10000> s;
1.~s;可以使用
2.&,|,^均可以直接使用
3.>>,<<也可以使用;
4.==,!=也可以;
5.s[]既可以取值,也可以赋值;
6.s.count();
7.s.any();当且尽当s所有位均为0时返回0
8.s.none();当且尽当s所有位均为0时返回1;
9.s.set();把s所有位都变为1;
10.s.set(a,b);把s的第a位改为b;
11.s.reset();把s所有位都变为0;
12.s.reset(k);把s的第k位改为0;
13.s.flip(),把s的所有值取反;
14.s.flip(k); 把s的第k位取反;
副章:
unique(a.begin(),a.end())返回一个迭代器的位置;
lower_bound(a.begin(),a.end(),x)返回大于等于x的迭代器的位置;
upper_bound(a.begin(),a.end(),x)返回大于x的迭代器的位置;
STL 大法好的更多相关文章
- C++中的STL大法整理
C++中的STL大法整理 由于碰到了一些不知道怎么用的STL vector vector是数组的STL,对于普通数组的优势就在于,可以动态地变化数组长度.那么面对一些数据范围非常大而又可以边读入边处理 ...
- CodeForces - 988C(STL大法好)
请你找出两个编号不同的数列,并从这两个数列中各恰好删除一个数,使得这两个数列的和相等. 用vector存每一个数 用map标记 即可 #include <bits/stdc++.h> us ...
- STL or 线段树 --- CSU 1555: Inversion Sequence
Inversion Sequence Problem's Link: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1555 Mean: 给你一 ...
- hdu 5265 pog loves szh II STL
pog loves szh II Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...
- HDU 1004 Let the Balloon Rise【STL<map>】
Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- HDU 3926 并查集 图同构简单判断 STL
给出两个图,问你是不是同构的... 直接通过并查集建图,暴力用SET判断下子节点个数就行了. /** @Date : 2017-09-22 16:13:42 * @FileName: HDU 3926 ...
- 洛谷P1088 火星人 [STL]
题目传送门 火星人 格式难调,题面就不放了. 分析: 这道题目不得不又让人感叹,还是$STL$大法好!!! $C++$的$algorithm$库中自带有$next\_permutation()$和$p ...
- 洛谷P2286 [HNOI2004]宠物收养所 [STL,平衡树]
题目传送门 宠物收养所 题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的 ...
- HDU4022 Bombing STL
Bombing Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) Total Su ...
随机推荐
- Qemu搭建ARM vexpress开发环境(三)----NFS网络根文件系统
Qemu搭建ARM vexpress开发环境(三)----NFS网络根文件系统 标签(空格分隔): Qemu ARM Linux 经过上一篇<Qemu搭建ARM vexpress开发环境(二)- ...
- IM推送保障及网络优化详解(二):如何做长连接加推送组合方案
对于移动APP来说,IM功能正变得越来越重要,它能够创建起人与人之间的连接.社交类产品中,用户与用户之间的沟通可以产生出更好的用户粘性. 在复杂的 Android 生态环境下,多种因素都会造成消息推送 ...
- 【React】react学习笔记01-概念与基本使用
俺为啥要学这玩意: 家里的杂事好不容易处理完了,开始正式静下心来学习~博主是做后端开发的,js基础不深,之前也是用React写过许多东西了,但是基本上都是用的CV大法,别人的组 件修修改改拿来 ...
- redis 文件事件模型
参考文献: 深入剖析 redis 事件驱动 Redis 中的事件循环 深入了解epoll (转) Redis自己的事件模型 ae EPOLL(7) Linux IO模式及 select.poll.ep ...
- ajax 前端发含有列表的数据
在前端页面也可以给后端发送一个包含列表的数据 html <body> <h3>index页面 </h3> <input type="text&quo ...
- c++学习书籍推荐《Visual C++2008入门经典》下载
百度云及其他网盘下载地址:点我 <Visual C++2008入门经典>学习目标: 使用标准模板库(STL)来组织和操作本地C++程序中的数据 C++程序调试技术 构造Microsoft ...
- Java学习笔记之---方法和数组
Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...
- 对象属性 Object.getOwnPropertyNames() Object.keys for...in
1.Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组. Object.getOwn ...
- linux修改时间显示格式
1. 问题描述 Linux下经常使用 "ls - ll"命令查看文件夹或文件创建及权限信息,但是满屏的Mar .May.Jul有点小难受. 2. 解决方案 修改bash_profi ...
- 个人永久性免费-Excel催化剂功能第34波-提取中国身份证信息、农历日期转换相关功能
这两天又被刷朋友圈,又来了一个自主研发红芯浏览器,国产啊国产,这是谁的梦.就算国产了,自主了,无底线的夸大吹嘘无道德,企业如是,国家如是,大清已亡!再牛B的技术落在天天删敏感信息.无法治.无安全感可言 ...