`
hongbochen1223
  • 浏览: 43671 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

(一):要点

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

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    STL.rar_stl queue

    STL的Vector、List、deque、set、map、queue、stack等的使用,包含了基本的用法

    STL源码剖析 中文高清

    高清中文 STL源码剖析 vector,list,deque,stack,queue最全的解析

    STL知识点思维导图

    组成的库来说提供了更好的...在C++标准中,STL被组织为下面的几个头文件:、、&lt;list&gt;、&lt;deque&gt;、、、、、、、&lt;queue&gt;、、&lt;stack&gt;和。文件中主要介绍了前面八个的使用,并且重点介绍了他们的属性和一些成员函数的使用。

    标准模板库STL

    STL容器部分主要由头文件、&lt;list&gt;、&lt;deque&gt;、、、&lt;stack&gt;和&lt;queue&gt;组成。 (2)算法(Algorithms)。包括各种基本算法,如比较、交换、查找、排序、遍历操作、复制、修改、移除、反转、合并等等。 STL算法部分...

    C++标准模板库STL初步(1)

    组成的库来说提供了更好的...在C++标准中,STL被组织为下面的几个头文件:、、&lt;list&gt;、&lt;deque&gt;、、、、、、、&lt;queue&gt;、、&lt;stack&gt;和。文件中主要介绍了前面八个的使用,并且重点介绍了他们的属性和一些成员函数的使用。

    C++标准模板库(STL) -容器

    STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都...在C++标准中,STL被组织为下面的13个头文件:、&lt;deque&gt;、、、、&lt;list&gt;、、 、、&lt;queue&gt;、、&lt;stack&gt;和。

    C++标准模板库STL初步(2)

    组成的库来说提供了更好的...在C++标准中,STL被组织为下面的几个头文件:、、&lt;list&gt;、&lt;deque&gt;、、、、、、、&lt;queue&gt;、、&lt;stack&gt;和。文件中主要介绍了前面八个的使用,并且重点介绍了他们的属性和一些成员函数的使用。

    STL模板库思维导图

    STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,...在C++标准中,STL被组织为下面的13个头文 件:、&lt;deque&gt;、、、、&lt;list&gt;、、、、&lt;queue&gt;、、&lt;stack&gt; 和。

    STL源码剖析.pdg

    1.9.1 stl_config.h 中的各种组态 027 组态3:static template member 027 组态5:class template partial specialization 028 组态6:function template partial order 028 组态7:explicit function template ...

    本例程提供了C++的STL常用数据结构及其算法的使用范例,比如vector、string、list

    本例程提供了C++的STL常用数据结构及其算法的使用范例,比如vector、string、list、forward_list、deque、queue、stack、map、set、multimap、multiset、tuple、bitset的使用范例,以及algorithm常….zip

    MiniSTL:实现MiniSTL是STL的一个子集,适合用于学习《 STL原始码剖析》(有注释分析测试)

    uninitialized_imp迭代器和迭代器萃取:iterator容器元素和特性的萃取:type_traits基本算法:算法红黑树序列容器:vector,list,deque,stack,queue,set仿函数各个模块的单元测试:unit_test未完成设计模式...

    STL 源码剖析(侯捷先生译著)

    这本书也不适合带领你学习面向对象(Object Oriented)技术 — 是的,STL 与面向对象没有太多关连。本书前言清楚说明了书籍的定位和合适的读者,以及各类基础读物。如果你的Generic Programming/STL实力足以阅读本书...

    stl-views.gdb

    # The following STL containers are currently supported: # # std::vector&lt;T&gt; -- via pvector command # std::list&lt;T&gt; -- via plist or plist_member command # std::map,T&gt; -- via pmap or pmap_member command #...

    C++ STL开发技术导引(第5章)

    第一篇 预备知识 第1章 C++编程技术 2 1.1 类和对象 2 1.2 类的继承 5 1.3 函数重载 5 1.4 访问控制 7 1.5 操作符重载 8 1.6 显式类型转换 9 1.7 异常处理 13 ...附录 STL版权说明 438

    C++ STL 中文版

    迭代器,utility,iterator,memory,算法,algorithm,numeric,functional,vector,list,deque,set,map,stack,queue逐章介绍

    stl详解 包括各种实例代码

    九、deque (Double Ended Queue) 双端队列 22 成员函数: 22 实例程序: 23 十、string 字符串 24 成员函数: 24 实例程序: 28 十一、常用算法调用 29 1. for_each 29 2. min_element / max_element 29 3. copy / ...

    STL:本例程提供了C++的STL常用数据结构及其算法的使用范例,比如vector、string、list、forward_list、deque、queue、stack、map、set、multimap、multiset、tuple、bitset的使用范例,以及algorithm常用的find、sort、copy、replace、count、accumulate......等泛型算法的使用范例。为面试笔试编程题提供便利

    STL本例程提供了C++的STL常用数据结构及其算法的使用范例,为面试笔试编程题提供便利

    C++ STL 开发技术导引(第6章)

    第一篇 预备知识 第1章 C++编程技术 2 1.1 类和对象 2 1.2 类的继承 5 1.3 函数重载 5 1.4 访问控制 7 1.5 操作符重载 8 1.6 显式类型转换 9 1.7 异常处理 13 ...附录 STL版权说明 438

    C++标准库(第2版)STL 源码

    STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在...在C++标准中,STL被组织为下面的13个头文件:、&lt;deque&gt;、、、、&lt;list&gt;、、、、&lt;queue&gt;、、&lt;stack&gt;和。

Global site tag (gtag.js) - Google Analytics