文档章节

STL中deque,queue,stack,list的学习

陈洪波
 陈洪波
发布于 2015/05/19 19:35
字数 996
阅读 22
收藏 0

(一):要点

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<int> 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<int> 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<int> 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 <list>
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(); //反序

本文转载自:http://blog.csdn.net/hongbochen1223/article/details/45124029

上一篇: 绪论
下一篇: STL vector练习
陈洪波
粉丝 2
博文 76
码字总数 1552
作品 0
济南
程序员
私信 提问
STL简单序列式容器的使用(vector、list、stack、queue)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/triorwy/article/details/80734849 更多知识点这里C++学习 - 目录索引 1:STL的起源 2:STL历史 3:vector容器的...

Triorwy
2018/06/19
0
0
STL vector 介绍连载1-2-3

STL简介: STL = Standard Template Library,标准模板库,惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。这可能是...

天远
2012/05/20
0
0
C++ STL学习——deque

在数据结构中还有一种很常见的队列叫做双端队列,我们在上一篇博客《C++ STL学习——queue》中讲到的队列queue是一种最标准的队列,只能在尾部插入数据,在头部删除数据。而今天我们讲到的d...

chenyufeng1991
2016/09/07
0
0
【转载】数据结构利器之私房STL

数据结构利器之私房STL 此系列的文章适合初学有意剖析STL和欲复习STL的同学们。 学过c++的同学相信都有或多或少接触过STL。STL不仅仅是c++中很好的编程工具(这个词可能有点歧义,用类库更恰...

悠米海
2012/12/02
0
0
STL(转自本人的csdn)总结

STL STL(Standard Template Library,标准模板库),它是由惠普实验室开发的一系列标准化的组件,目前是C++的一部分。 ‚STL的代码从广义上讲分为三类:container(容器)、iterator(迭代器...

WinkJie
05/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

搭建tftp服务

前言: 最近整理一些以前的学习笔记。 过去都是存储在本地,此次传到网络留待备用。 TFTP服务: TFTP:Trivial File Transfer Protocol 不重要文件传输协议 主要用来传送小文件,不支持认证和...

迷失De挣扎
今天
3
0
rest 的理解

rest:表现层状态转移。 什么是restful协议?https://en.wikipedia.org/wiki/Representational_state_transfer 使用restful的好处。 Rest是一种体系结构样式,他定义了一组用于创建web服务的...

xiaoxiao_go
今天
5
0
聊聊spring cloud的CachingSpringLoadBalancerFactory

序 本文主要研究一下spring cloud的CachingSpringLoadBalancerFactory CachingSpringLoadBalancerFactory spring-cloud-openfeign-core-2.2.0.M1-sources.jar!/org/springframework/cloud/o......

go4it
昨天
4
0
一篇文章搞定——JDK8中新增的StampedLock

一、StampedLock类简介 StampedLock类,在JDK1.8时引入,是对读写锁ReentrantReadWriteLock的增强,该类提供了一些功能,优化了读锁、写锁的访问,同时使读写锁之间可以互相转换,更细粒度控...

须臾之余
昨天
5
0
Android Camera原理之CameraDeviceCallbacks回调模块

在讲解《Android Camera原理之openCamera模块(二)》一文的时候提到了CameraDeviceCallbacks回调,当时没有详细展开,本文我们详细展开讲解一下。 CameraDeviceCallbacks生成过程: 《Android...

天王盖地虎626
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部