先说一下  一边要用到算法的东西一般要加#include<algorithm>头文件

一、栈和队列

1 栈 :一种线性表

特点  后进先出

头文件  #include<stack>

声明  stack< 类型 > sk(变量);  注意  这里的类型  如果是char只能是单个字符 如果要存字符串要用string

  • sk.push();           向里存  写在括号里
  • sk.pop();             出栈 把最上面的出栈(即所谓的先进后出  注意  这里的不能赋值给别的变量 括号里也不能写东西
  • data = sk.top();   取出栈顶的元素赋值给一个变量 (不出栈
  • size = sk.size();  栈里元素的个数
  • sk.empty();         判定栈是否为空

注意 要清空栈  没有函数 要自己写

2 队列

特点   先进先出  (类似于排队买饭

头文件  #include<queue>

声明  queue< 类型 > q(变量);

  • q.push();             向里存  写在括号里
  • q.pop();               出队列 把队首的出队列(即所谓的先进先出  注意  这里的不能赋值给别的变量 括号里也不能写东西
  • data = q.front();   获得队列首的元素赋值给一个变量 (不出队列
  • q.back();              获得队尾的值 同q.front();
  • size = q.size();     队列里元素的个数
  • q.empty();            判定队列是否为空
  • q.clear();              清空队列

3 双端队列

特点  两端都可以进出

头文件  #include<deque>

声明  deque< 类型 > dq(变量);

  • dq.push_front();           向双端队列首存  写在括号里
  • dq.push_back();           向双端队列尾存  写在括号里
  • dq.pop_front();             将双端队列的队首元素出双端队列
  • dq.pop_back();             将双端队列的队尾元素出双端队列
  • data = dq.front();          获得双端队列首的元素赋值给一个变量 (不出双端队列
  • q.back();                       获得双端队列尾的值 同q.front();
  • dq.empty();                  判定双端队列是否为空
  • dq.clear();                      清空双端队列

4 优先队列(暂时不会。。

特点 自动按升降序排序

头文件 #include<queue>

priority_queue < 类型 > q;                                                      默认大小排序从大到小

priority_queue < 类型 ,vector <类型>, greater<类型> > q;   默认大小排序从小到大

priority_queue < 类型 ,vector <类型>, less<类型> > q;        默认大小排序  从大到小

  • q.push();           向里存  写在括号里
  • q.pop();             出队列  队首
  • data = q.top();   取出队首的元素赋值给一个变量 (不出栈
  • size = q.size();  队列里元素的个数
  • q.empty();         判定队列是否为空

5 unique(     ,     )    去重       lower_bound()   upper_bound()

6 set

set <  类型 > q; 集合   自带排序   迭代器

q.insert();  插入

q.erase();  插入

q.lower_bound();

迭代器   set  <  类型  >  :: iterator it;

it = q.begain();

for(it = q.begain() ; it ! = q.end() ; it++)

*it

两个查询

it=q.find();  返回迭代器

q.count();  返回0或1

运算符重载

6 map

map< 类型,类型 > m;   相当于将离散的数连续的排列在一个数组中   map< , >::iterator it;   (*it).first;是键  (*it).second; 是值;

键     值

查找  m.find();

m.count();

注意  if(m[6]!=0)  是可以的  但是  这样写如果没有会往m里存  可能会将原来的数给压下去

map可以是好几个键对应一个值

 对于遍历    正着遍历(从小到大) for(it=m.begin();it!=m.end();it++)

反着遍历(从大到小) for(it=m.rbegin();it!=m.rend();it++)

这里的it无论正反好像只支持++, - -的操作不支持+1,-1这样的操作

7 pair   可以重

STL 一些常用的STL函数(持续更新的更多相关文章

  1. php 常用的好函数(持续更新)

    parse_url parse_url $url = "http://www.electrictoolbox.com/php-extract-domain-from-full-url/&qu ...

  2. iOS:开发常用GitHub开源项目(持续更新)

    IOS开发常用GitHub开源项目(持续更新) 数据类 开源库 作者 简介 AFNetworking Mattt 网络请求库 ASIHTTPRequest pokeb 网络请求库 Alamofire ...

  3. PHP的常用函数 持续更新

    PHP的常用函数 前言: 由于害怕遗忘,故在此记录下常用的php函数,以便复习 1 define函数 作用:定义常量 用法 <?php define('a',100); ?> 2 intv ...

  4. Android开发中常用的库总结(持续更新)

    这篇文章用来收集Android开发中常用的库,都是实际使用过的.持续更新... 1.消息提示的小红点 微信,微博消息提示的小红点. 开源库地址:https://github.com/stefanjau ...

  5. sqlserver常用知识点备忘录(持续更新)

    背景 一个项目的开发,离不开数据库的相关操作,表/视图设计,存储过程,触发器等等数据库对象的操作是非常频繁的.有时候,我们会查找系统中类似的代码,然后复制/粘贴进行再进行相应的修改.本文的目的在于归纳 ...

  6. Android中常用开发工具类—持续更新...

    一.自定义ActionBar public class ActionBarTool { public static void setActionBarLayout(Activity act,Conte ...

  7. 常用linux,DOS命令——持续更新

    cd 文件夹名 进入某个文件夹 cd ../ 退出该级目录进入上一级 cd ../../ 退出该级目录进入上上级 cd ../../demo 退出该级目录进入上上级的目录 d: 回车 进入d盘 ls ...

  8. STL的常用用法、函数汇总(不定时更新)

    隶书文字为原创. 1.vector 在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结. 1 基本操作 (1)头文件#include<vector>. (2)创建vec ...

  9. 记录 C++ STL 中 一些好用的函数--持续更新 (for_each,transform,count_if,find_if)

    在日常的编程中,有这么几种操作还是比较常见的: 把一组数据都赋值成一个数,在一组数据中查找一个数,统计一组数据中符合条件的数等等. 一般的写法可以用循环,没有什么是循环不能搞定的.假如在这里怎么用介绍 ...

随机推荐

  1. day2 数据结构和一些基础知识

    请查看我的云笔记链接: http://note.youdao.com/noteshare?id=4171342601326695ec87866e1cc3e410&sub=20CFB149543 ...

  2. 一点一点学写Makefile(5)-获取文件所在路径

    我们在开发一套代码时,应该保证工程放到任何一个目录中均可以编译成功,但是有时候链接库的时候会造成编译错误,本次就会告诉大家如何动态的获得工程所在的绝对路径 代码下载目录 选择Makefile-5 // ...

  3. 初见git和github

    一.我的github helloworld程序的地址:https://github.com/wyf1213/wyf-project1 二.git/github的相关介绍资料 1.github是什么   ...

  4. ABAP的权限检查跟踪(Authorization trace)工具

    事务码 STAUTHTRACE 1. 点击"Activate Trace" button激活跟踪: 可以看到跟踪状态已经处于打开状态. 在同一个application server ...

  5. kahadb设计

    Kahadb设计思想   简介 hakadb是activemq的持久化数据库,作为消息队列的存储,每个消息有一个消息ID,提供了对消息的快速的查找,更新,以及消息的事物支持,以及意外磬机之后的恢复.丰 ...

  6. ACM-ICPC(11/9)

    今天看了一下黑书,感觉很刘汝佳,是他的风格,题目挺好的~~~ 枚举 P12翻硬币 二进制枚举每一列的情况2^9种. 在每一种情况下然后对于每一行就是翻与不翻的两种情况~~~ 贪心 P13钓鱼问题 PO ...

  7. [USACO17FEB]Why Did the Cow Cross the Road III G

    嘟嘟嘟 首先看到这种序列的问题,我就想到了逆序对,然后就想如何把这道题转化. 首先要满足这个条件:ai <bi.那么我们把所有数按第一次出现的顺序重新赋值,那么对于新的数列,一定满足了ai &l ...

  8. 设置IE浏览器的默认主页

    实现效果: 知识运用: RegistryKey类的GetValue方法 public Object GetValue (string name , Object defaultValue) name ...

  9. print (re.findall("(?:abc)+","abcabcabc"))

    _*_ coding:utf-8 _*_ import re findall 有括号优先级,所以我们这里一直出现的都是 abc print (re.findall("(abc)+" ...

  10. 64 位系统(win7/win8) 下使用C# 程序问题

    1  C# 程序是控制台类,使用的组件如果是32位,建议在编译的时候,platform (X86,AnyCPU,X64)选择X86 .使用X86 模式编译,才能调用32位程序的API. 2  ASP. ...