博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL中deque,queue,stack,list的学习
阅读量:7218 次
发布时间:2019-06-29

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

版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/45124029

(一):要点

1:容器deque的使用方法

2:容器queue,stack的使用方法
3:容器list的使用方法

(二)deque

1:deque简介

deque是“double-ended queue”的缩写,deque是双端的,vector是单端的。

deque在接口上和vector相似,在许多操作的地方可以直接替换
deque可以随机存取元素,支持索引值直接存取,使用[]或者是at()方法
deque的头部和尾部添加和移除元素都非常快速,但是在中部插入元素或移除元素
比较费时。

2:deque的构造

//和vector基本相同

deque
de;

3:deque头部和尾部添加或者是移除元素

deque.push_back(ele) ; // 尾部添加元素
deque.pop_back(); //尾部删除元素

deque.push_front(ele) ; //头部添加元素

deque.pop_front(); //头部移除元素

4:deque的数据存取

deque.at[index]; //返回索引index所指的数据,如果越界,会跑出out_of_range
deque[index];//返回index所指的数据,越界的话,不会抛出异常

deque.front(); //返回第一个元素

deque.back(); //返回最后一个元素

5:deque的迭代器

deque.begin(); //返回容器中第一个元素的迭代器
deque.end(); //返回容器中最后一个元素之后的迭代器

deque.rbegin(); //返回容器中倒数第一个元素的迭代器

deque.rend(); //返回容器中倒数最后一个元素之后的迭代器

6:deque带参数的构造

deque(beg,end); //构造函数将区间[beg,end)区间的元素拷贝给本身,
//注意是左闭右开

deque(n,ele); //构造函数将n个ele拷贝给本身

deque(const deque &deq); //拷贝构造函数

7:deque的赋值

deque.assign(beg,end);
deque.assign(n,ele);

deque& operator=(const deque &deq);

deque.swap(deq); //将vec与本身的元素互换

8:deque的大小

包括size(),empty(),resize()

9:deque的插入

与vector是一样的

10:deque的删除

包括clear(),erase()等方法,与vector是一样的。

(三)、queue 队列

1:简介
queue 是队列容器,是一种“先进先出”的容器
queue是简单的装饰deque容器而成为另外一种容器。

2:构造函数与vector和deque是一样的

3:queue的push和pop操作

由于queue是单向的,一个口插入,一个口输出
queue.push(ele); //在后面插入一个元素
queue.pop(); //在前面弹出一个元素
例子:

queue
que;que.push(10);que.push(20);que.push(30);

则插入之后,效果为:

这里写图片描述

则执行

que.pop();
que.pop();
que.pop();
输出的效果为10,20,30

4:queue的拷贝,构造和复制

基本上和vector和qedue是一样的

5:queue的数据存取

deque.back(); //获取最后一个元素

deque.front(); //获取第一个元素

6: queue的大小

queue.size(); //元素个数
queue.empty(); // queue是否为空

(四):stack

1:简介
stack是先进后出

2:stack的拷贝,构造和复制都是一样的

3:函数基本上和queue是一样的

4:举例

stack
s;s.push(10);s.push(20);s.push(30);

这里写图片描述

则执行:

s.pop();
s.pop();
s.pop();
输出的结果为:
30,20,10
(五):list容器

1:简介

list是一个双向链表容器,可高效的进行插入删除元素

list不可以随机存取元素,所以不支持at(pos)函数和[]操作

2: 事前准备

#include 
using namespace std;

3:list头尾的添加移除操作

list.push_back(ele) ; // 尾部添加元素

list.pop_back(); //尾部删除元素

list.push_front(ele) ; //头部添加元素

list.pop_front(); //头部移除元素

4:list与迭代器

list.begin(); //返回容器中第一个元素的迭代器
list.end(); //返回容器中最后一个元素之后的迭代器

list.rbegin(); //返回容器中倒数第一个元素的迭代器

list.rend(); //返回容器中倒数最后一个元素之后的迭代器

5:赋值,大小,插入,删除等等都是一样的

不过在删除操作中多了一个remove元素:

list.remove(ele);
list.erase(index);

这两个方法的区别就是remove是删除所有与ele匹配的元素,

而erase()函数是将指定位置的元素移除掉

6:list的反序

list.reverse(); //反序

你可能感兴趣的文章
Linux中计划任务执行脚本crontab-简洁版
查看>>
Java - IO
查看>>
安卓app中嵌入一个H5页面,当手机系统设置字体变大时,如何使H5页面的字体不会随用户自己调整的系统字体变化而变化?...
查看>>
safari 收藏导出 手机safari 导出
查看>>
Dalvik 虚拟机 jvm 区别
查看>>
hexo从零开始
查看>>
币值转换
查看>>
RabbitMQ(六)远程连接
查看>>
得到ios设备的一些信息
查看>>
【教程】如何修改路由表?
查看>>
云计算与虚拟化之后:网络威胁成新挑战
查看>>
50个Demo展示HTML5无穷的魅力
查看>>
chapter 4:贪心
查看>>
批处理学习笔记
查看>>
Linux挂载磁盘
查看>>
Cyclone II RAM ROM设置
查看>>
Ubuntu下实现伪静态
查看>>
python 二维数组遍历
查看>>
第8周课下作业1(补)
查看>>
阿萨斯
查看>>