#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 大法好的更多相关文章

  1. C++中的STL大法整理

    C++中的STL大法整理 由于碰到了一些不知道怎么用的STL vector vector是数组的STL,对于普通数组的优势就在于,可以动态地变化数组长度.那么面对一些数据范围非常大而又可以边读入边处理 ...

  2. CodeForces - 988C(STL大法好)

    请你找出两个编号不同的数列,并从这两个数列中各恰好删除一个数,使得这两个数列的和相等. 用vector存每一个数 用map标记 即可 #include <bits/stdc++.h> us ...

  3. STL or 线段树 --- CSU 1555: Inversion Sequence

    Inversion Sequence Problem's Link:   http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1555 Mean: 给你一 ...

  4. 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? ...

  5. 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 ...

  6. HDU 3926 并查集 图同构简单判断 STL

    给出两个图,问你是不是同构的... 直接通过并查集建图,暴力用SET判断下子节点个数就行了. /** @Date : 2017-09-22 16:13:42 * @FileName: HDU 3926 ...

  7. 洛谷P1088 火星人 [STL]

    题目传送门 火星人 格式难调,题面就不放了. 分析: 这道题目不得不又让人感叹,还是$STL$大法好!!! $C++$的$algorithm$库中自带有$next\_permutation()$和$p ...

  8. 洛谷P2286 [HNOI2004]宠物收养所 [STL,平衡树]

    题目传送门 宠物收养所 题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的 ...

  9. HDU4022 Bombing STL

    Bombing Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Su ...

随机推荐

  1. Rails.cache相关知识

    可能里面的一些知识已经不被大家使用了,但是作为学习,我想和大家分享一下个人关于Rails.cache的浅显的认识,望大家指教. 1.Rails.cache是什么 它是Rails中的缓存,拥有所有缓存的 ...

  2. 转载 make版MYsql 5.5.13

    使用cmake安装mysql5.5.132014-04-09 12:59:42 分类: Mysql/postgreSQL 原文地址:使用cmake安装mysql5.5.13 作者:isqlw 安装cm ...

  3. IAR for STM8的简介、下载、安装及注册教程

    一.简介 1.关于IAR for STM8 IAR for STM8 是一个嵌入式工作平台,主要应用于STM8 系列芯片的开发,现在(2018年3.10版本)能够支持市面上所有的STM8芯片. 个人认 ...

  4. mysql 正确清理binlog日志的两种方法

    前言: MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间,因此,要对binlog使用正确安全的方法清理掉 ...

  5. (持续更新)Qt3D 学习资源

    目录 一.前言 1.1 什么是Qt3D 1.2 Qt3D 的利与弊 利:原生支持 弊处:资料过少 二.学习建议 2.1 OpenGL 学习资料 2.2 Qt3D 资料 2.2.1 视频资料 2.2.4 ...

  6. HDU 4444:Walk(思维建图+BFS)***

    http://acm.hdu.edu.cn/showproblem.php?pid=4444 题意:给出一个起点一个终点,给出n个矩形的两个对立顶点,问最少需要拐多少次弯可以从起点到达终点,如果不能输 ...

  7. umeditor 上传图片 相对路径的设置和保存

    此篇文章仅献给已实现百度富文本编辑器,想要设置相对路径并保存到数据库,方便以后项目迁移. 使用的版本为1.2.3,适用图片上传中点击以及拖拽功能. //保存图片相对地址的设置        //1.请 ...

  8. JVM结构的简单梳理

    #cnblogs_post_body img { width: 500px; height: auto; } JVM是什么 JVM的基本特性 JVM的流程结构 1. Java编译(Java Compi ...

  9. idea环境下push项目

    1,选中需要推送的项目: 2,VCS-git-add 添加到本地仓库 3,vcs-commit 提交 4.commit and push 推送到远程仓库 出现错误这是提示程序有错误或者是TODO代码没 ...

  10. Drools规则引擎-判断集合(List)是否包含集合

    问题场景 在使用Drools规则引擎时,有朋友会遇到这样的问题,就是在when部分判断的两个参数都是集合类型,比如两个List,此时要判断一个集合是否包含另外一个集合的内容. 拿一个具体的例子来说明, ...