#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. 数据库读写分离Master-Slave

    数据库读写分离Master-Slave 一个平台或系统随着时间的推移和用户量的增多,数据库操作往往会变慢,这时我们需要一些有效的优化手段来提高数据库的执行速度:如SQL优化.表结构优化.索引优化.引擎 ...

  2. 【Zookeeper02】ZK的作用以及使用

    上一篇介绍了ZK的安装以及集群的搭建,这只能算是个软件安装过程,具体是做什么的.怎么用也没有做解释,这一篇中博主就自己的私人理解简单写一下: 1.是什么: a.Zookeeper是一个分布式协调服务, ...

  3. Java进阶——高性能MySQL(一)

    MySQL逻辑架构: 链接管理与安全性: MySQL5.5或更高版本版本提供了一个API,支持线程池(Thread-Pooling)插件,可以使用池中的少量线程来服务大量的连接. 优化与并行: MyS ...

  4. 搭建minima主题的github博客网站

    layout: post title: "搭建minima主题的github博客网站" date: 2019-04-20 19:20:20 +0800 --- 作者:吴甜甜 个人博 ...

  5. 《深入浅出RxJS》读书笔记

    rxjs的引入 // 如果以这种方式导入rxjs,那么整个库都会导入,我们一般不可能在项目中运用到rxjs的所有功能 const Rx = require('rxjs'); 解决这个问题,可以使用深链 ...

  6. 前端Web浏览器基于Flash如何实时播放监控视频画面(前言)之流程介绍

    [关键字:前端浏览器如何播放RTSP流画面.前端浏览器如何播放RTMP流画面] 本片文章只是起到抛砖引玉的作用,能从头到尾走通就行,并不做深入研究.为了让文章通俗易懂,尽量使用白话描述. 考虑到视频延 ...

  7. Junit4学习使用和总结

    Junit4学习使用和总结 部分资料来源于网络 编辑于:20190710 一.Junit注解理解 1.@RunWith 首先要分清几个概念:测试方法.测试类.测试集.测试运行器.其中测试方法就是用@T ...

  8. 控制台程序秒变Windows服务(Topshelf)

    项目中有些时候需要写服务,一般我们都是先创建控制台程序,测试,运行,成功之后再创建windows服务程序,这样好麻烦啊,有没有简单的控制台程序直接变成Widnows服务,经过查找,找到了Topshel ...

  9. Egret入门学习日记 --- 第四篇

    第四篇(学习篇) 好了,今天继续把昨天的问题解决了. 今天见鬼了. 现在界面又出来了.唯一我动过的地方,应该就是这里: 是的,我点了一下刷新.之后,不管我怎么创建新的EXML文件,放在src目录,还是 ...

  10. k8s学习 - 概念 - master/node

    k8s学习 - 概念 - master/node 在k8s中,有各种各样的概念和术语.这些概念是必须要学习和掌握的.我们先罗列下所有概念,然后再一个个看具体实例. 大概说一下这些概念: Master: ...