博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL基础用法
阅读量:5059 次
发布时间:2019-06-12

本文共 2784 字,大约阅读时间需要 9 分钟。

STL序列容器

  

  

    

  

  

 

容器共同特征

  .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关联容器

  

  

  

STL相关函数

  

  

  

  

 

 

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

你可能感兴趣的文章
VC为控件添加背景
查看>>
Wojilu学习笔记 (01)
查看>>
web.xml上下文初始化参数
查看>>
nginx,docker反向代理
查看>>
同事间一些搞笑的事情
查看>>
Python 基础篇(2)
查看>>
NOIP临考经验【转】
查看>>
ZOJ 3235 Prototype
查看>>
Best Practices in Asynchronous Programming
查看>>
数组的使用方法
查看>>
64位操作系统下IIS报“试图加载格式不正确的程序”错误
查看>>
存储过程里构建模糊查询,引号的处理
查看>>
黑莓游戏引擎
查看>>
Dijkstra算法和其邻接矩阵实现
查看>>
IE6 中 window.location.href 不能跳转
查看>>
v形 加强版
查看>>
EMVTag系列12《卡片内部风险管理数据》
查看>>
Recommendation system
查看>>
linux批量删除进程
查看>>
第二次代码作业
查看>>