19.3 C++STL标准模板库大局观-容器的说明和简单应用例续
19.1 C++STL标准模板库大局观-STL总述、发展史、组成与数据结构谈
19.2 C++STL标准模板库大局观-容器分类与array、vector容器精解
19.3 C++STL标准模板库大局观-容器的说明和简单应用例续
19.4 C++STL标准模板库大局观-分配器简介、使用与工作原理说
19.5 C++STL标准模板库大局观-迭代器的概念和分类
19.6 C++STL标准模板库大局观-算法简介、内部处理与使用范例
19.7 C++STL标准模板库大局观-函数对象回顾、系统函数对象与范例
19.8 C++STL标准模板库大局观-适配器概念、分类、范例与总结
文章目录
- 3.容器的说明和简单应用例续
- 3.1 deque和stack
- (1)deque
- (2)stack
- 3.2 queue
- 3.3 list
- 3.4 其他
- (1)forward_list
- (2)map和set
- (3)unordered_map与unordered_set等
3.容器的说明和简单应用例续
3.1 deque和stack
(1)deque
deque这种顺序容器是一个双端队列(双向开口),deque是double-ended queue的缩写。这种容器数据存储结构的感觉如图所示。
该队列相当于一个动态数组,因为它是双端的,所以无论在头部还是在尾部插入和删除数据都会很快,但是若要在中间插入数据,因为要移动其他元素,效率就会比较低。看看如下范例。
class A
{public:int m_i;A(int tmpv) :m_i(tmpv) //构造函数{cout << "A::A()构造函数执行" << endl;}A(const A& tmpA){m_i = tmpA.m_i;cout << "A::A()拷贝构造函数执行" << endl;}~A(){cout << "A::~A()析构函数执行" << endl;}
};
int main()
{deque<A> mydeque;for (int i = 0; i < 5; ++i){cout << "--------------begin----------------" << endl;mydeque.push_front(A(i));cout << "--------------end----------------" << endl;}for (int i = 0; i < 5; ++i){cout << "--------------begin2----------------" << endl;mydeque.push_back(A(i));cout << "--------------end2----------------" << endl;}for (int i = 0; i < mydeque.size(); ++i){cout << "下标为" << i << "的元素的m_i值为:" << mydeque[i].m_i << endl;printf("对象mydeque[%d]的地址为%p \n", i, &mydeque[i]);}
}
通过结果可以看到,虽然看起来图19.8绘制的deque容器的内存是连续的,但是测试结果表明它的内存并不连续。
deque其实是一个分段数组。当插入元素多的时候,它就会把元素分到多个段中去,当然,每一段的内存是连续的(所以只能说内存是分段连续)。当然,每一段能存多少个元素或者说每一段内存有多大,笔者并没有进一步深入研究。根据上面的结果,似乎每一段能保存4个元素。
将图19.8重新绘制一下,绘制成分段连续的感觉,如图19.9所示。
其他一些和deque相关的特性、接口,这里笔者不多谈,读者有兴趣可以自行摸索。
(2)stack
3.2 queue
3.3 list
3.4 其他
(1)forward_list
(2)map和set
(3)unordered_map与unordered_set等
19.3 C++STL标准模板库大局观-容器的说明和简单应用例续相关推荐
- 19.1 C++STL标准模板库大局观-STL总述、发展史、组成与数据结构谈
19.1 C++STL标准模板库大局观-STL总述.发展史.组成与数据结构谈 19.2 C++STL标准模板库大局观-容器分类与array.vector容器精解 19.3 C++STL标准模板库大局观 ...
- C++入门到精通 ——第七章 STL标准模板库大局观
七.STL标准模板库大局观 Author: XFFer_ 先分享一本 <C++ 标准库 第二版> ,望在STL的道路上从入门到放弃!(开玩笑的啦,愈行愈远~) 链接: https://pa ...
- 补8-5日复习内容 STL 标准模板库的容器
//有关 STL 标准模板库的函数 /* string 的 */ /* #include <iostream> #include <string> #include <w ...
- C++提高编程----STL标准模板库-常用容器
STL标准模板库(Standard Template Library)-常用容器 C++的,面向对象和泛型编程,目的就是提高代码的复用性:为了建立数据结构和算法的统一标准,诞生了STL 一.STL初识 ...
- stl标准模板库_C ++标准模板库(STL)中的array :: fill()
stl标准模板库 fill() is a member function of "array container", which sets a given value to all ...
- stl标准模板库_C ++标准模板库(STL)中的数组及其常用功能
stl标准模板库 "array" is a container in C++ STL, which has fixed size, which is defined in &quo ...
- C++的STL标准模板库思维导图
STL标准模板库思维导图 C++ 语言的核心优势之一就是便于软件的重用.C++ 中有两个方面体现重用: 一是面向对象的继承和多态机制: 二是通过模板的概念实现了对泛型程序设计的支持. C++ 的标准模 ...
- stl标准模板库_如何在C ++ STL(标准模板库)中使用Pair
stl标准模板库 In this article, we'll take a look at using pair in C++ Standard Template Library (STL). 在本 ...
- STL 标准模板库—容器部分【C++】
STL标准模板库 包含内容: 容器类:vector.list.deque.set.map等 迭代器:"泛型指针",每个容器都有自己的迭代器,[vector和deque的迭代器是随机 ...
最新文章
- Maven 学习Tips
- 【c语言】蓝桥杯算法训练 4-2找公倍数
- 如何才能正确的关闭Socket连接
- 零基础python爬虫_零基础写python爬虫之爬虫编写全记录
- Java动态代理模拟spring的AOP
- C++ 类访问控制(public/protected/private)
- 一份关于机器学习端到端学习指南
- 用计算机探索规律反思,用计算器探索规律教学反思
- truffle 安装以及基本指令
- spring源码之下载及构建
- 年终盘点丨2021边缘计算大事记
- delphi10.2 将网页页面带格式复制到word中。
- 手机计算机都无法上网,手机能上网但win7电脑不能上网怎么回事?
- LSDSLAM算法解析
- 终极选择---老男孩教育
- 前置:API:DSP:核心交换机:边界网关协议:边界:(防御)防火墙:负载均衡:摆渡机:名词解释
- 产品包装设计在品牌和营销中的重要性
- [Un-Routed Net Constraint Violation] 问题解决
- 计算机技术在注射模中的应用,CAD/CAM技术在注射模具设计,制造中的应用.pdf
- 23种设计模式UML类图图解