STL基础用法

STL序列容器

  1.List (列表)

  2.Stack (栈)

  3.Queue (队列)  

  4.Priority——queue (优先队列)

  5.Deque (双端队列)

容器共同特征

  .begin()

  .end()

  .size()

  .swap(x)

  .empty()

  ::iterator

List(列表)

基本函数:

  .merge(listb)若A,B为有序,C也为有序,若A,B为无序,C也为无序,llistb完后为空

  .remove(x) O(1) 删除  .remove(2) 把二全删除

  .sort()排序

  .splice(pos,listb)listb完后为空,pos指针

  unique(list)连续元素压缩为单个元素,将其他的删除,大小减小

其他成员函数:

  .front()

  .back()

  .push_front(t)

  .push_back(t)

  .pop_front(t)

  .pop_back(t)

  .insert(p,t)    插入数组 name.insert(pos,start,last)

  .erase(p)

  .clear()

  

定义:

  头文件 include<list> include<iterator>

  列表 list<类型> 名称(a,b) //赋值a个b

注意事项:

  1.双向链表,不支持数组表示法与随机访问

  2.指针找位置很重要

Stack(栈)

基本函数:

  .push(x)

  .pop()

  .top()

  .size()

  .empty()

定义:

  头文件 include<Stack> include<iterator>

  栈 Stack<类型> 名称

注意事项:

  1.栈(后进先出表),不支持数组表示法与随机访问

Queue(队列)

基本函数:    

  .push()

  .front()

  .back()

  .size()

  .empty()

  .pop() 

定义:

  头文件 include<queue> include<iterator>

  队列 Queue<类型> 名称

Priority_queue(优先队列)

基本函数:  

  .push(x)

  .pop()

  .top()

  .size()

  .empty()

  .emplace() 原地构造一个元素并插入队列

定义:

  头文件 include<queue> include<iterator>

  队列 priority_queue<类型> 名称

  越大越优先

 

 优先级自定义(运算符重载):


    Struct Node{

      int  w,v

    }

    bool operator <(const Node &a,const Node &b){

      return a.v>b.v   (按照V从小到大输出)

    }

注意事项:

  1. 对于基础类型 默认是大顶堆

    priority_queue <int,vector<int>,greater<int> > q;   升序
    priority_queue <int,vector<int>,less<int> > q;    降序

Deque(双端队列)

基本函数:  

  .front()

  .back()

  .push_front(t)

  .push_back(t)

  .pop_front(t)

  .pop_back(t)

定义:

  头文件 include<deque> include<iterator>

  双端队列 deque<类型> 名称

注意事项:

  1.Deque(双端队列),支持数组表示法与随机访问,类似vector

iterator

实质:广义的指针

for_each(begin,end,funtion不加括号) 头文件<algorithm> Funtion为普通Fun

STL关联容器

  1.vector

  2.set/multiset/bitset

  3.map/multimap

STL相关函数

  1.sort

  2.reverse

  3.eandom_shuffle

  4.unique

Vector 序列容器

基本函数:

  beigin/end

  front/back

  erase/insert

  size/empty/clear

  push_back/pop_back

  

定义:

  头文件 include<vector> include<iterator>

  向量 vector<类型> 名称

注意事项:

  1.向量(数组),支持数组表示法与随机访问

  2.插入insert(指针+X位置,数值) 在指针开始的X位置前插入

  3.可以直接初始化赋值 vector<类型> 名称A(名称B) 将B复制给A

Set 有序集合   Multiset 有序多重集合

基本函数: 

  size / empty / clear / erase

  begin / end

  find / insert

  count  统计等于X的个数

  lower-bound / unper_bound  大于等于X最小的/大于X最小的

定义:

  头文件 include<set> include<iterator>

  集合 set<类型> 名称

注意事项:

  1.符合集合的三大性质之一:单一性

  2.不符合集合的三大性质之二:随机性,无序性;本集合是有序集合

  

Map 一一映射  Multimap 多值映射 (未完成!!!!!!)

基本函数: 

  size / empty / clear / erase

  begin / end

  find / insert

  first / second

定义:

  头文件 include<map> include<iterator>

  映射 map<键,值> 名称

注意事项:

  1.map不能有重复的键值对,即如果插入键相同的键值对,则将覆盖掉同键值的键值对。multimap则不会覆盖。

Sort 函数

定义:

  头文件 include<algorithm> 

  sort(数组名+S,数组名+E,less<int>()) greater(降序)

  sort(数组名+S,数组名+E) 升序

  自定义优先级 

    sort(数组名+S,数组名+E,cmp)

    bool cmp(类型 代指名A,类型 代指名B) //自定义 前A后B 

 

reverse(begin,end)前后翻转

random_shuffle(begin,end)随机打乱序列

unique(begin,end)去重 连续元素压缩成单个元素

原文地址:https://www.cnblogs.com/SeanOcean/p/10364091.html