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标准模板库大局观-容器的说明和简单应用例续相关推荐

  1. 19.1 C++STL标准模板库大局观-STL总述、发展史、组成与数据结构谈

    19.1 C++STL标准模板库大局观-STL总述.发展史.组成与数据结构谈 19.2 C++STL标准模板库大局观-容器分类与array.vector容器精解 19.3 C++STL标准模板库大局观 ...

  2. C++入门到精通 ——第七章 STL标准模板库大局观

    七.STL标准模板库大局观 Author: XFFer_ 先分享一本 <C++ 标准库 第二版> ,望在STL的道路上从入门到放弃!(开玩笑的啦,愈行愈远~) 链接: https://pa ...

  3. 补8-5日复习内容 STL 标准模板库的容器

    //有关 STL 标准模板库的函数 /* string 的 */ /* #include <iostream> #include <string> #include <w ...

  4. C++提高编程----STL标准模板库-常用容器

    STL标准模板库(Standard Template Library)-常用容器 C++的,面向对象和泛型编程,目的就是提高代码的复用性:为了建立数据结构和算法的统一标准,诞生了STL 一.STL初识 ...

  5. stl标准模板库_C ++标准模板库(STL)中的array :: fill()

    stl标准模板库 fill() is a member function of "array container", which sets a given value to all ...

  6. stl标准模板库_C ++标准模板库(STL)中的数组及其常用功能

    stl标准模板库 "array" is a container in C++ STL, which has fixed size, which is defined in &quo ...

  7. C++的STL标准模板库思维导图

    STL标准模板库思维导图 C++ 语言的核心优势之一就是便于软件的重用.C++ 中有两个方面体现重用: 一是面向对象的继承和多态机制: 二是通过模板的概念实现了对泛型程序设计的支持. C++ 的标准模 ...

  8. stl标准模板库_如何在C ++ STL(标准模板库)中使用Pair

    stl标准模板库 In this article, we'll take a look at using pair in C++ Standard Template Library (STL). 在本 ...

  9. STL 标准模板库—容器部分【C++】

    STL标准模板库 包含内容: 容器类:vector.list.deque.set.map等 迭代器:"泛型指针",每个容器都有自己的迭代器,[vector和deque的迭代器是随机 ...

最新文章

  1. Maven 学习Tips
  2. 【c语言】蓝桥杯算法训练 4-2找公倍数
  3. 如何才能正确的关闭Socket连接
  4. 零基础python爬虫_零基础写python爬虫之爬虫编写全记录
  5. Java动态代理模拟spring的AOP
  6. C++ 类访问控制(public/protected/private)
  7. 一份关于机器学习端到端学习指南
  8. 用计算机探索规律反思,用计算器探索规律教学反思
  9. truffle 安装以及基本指令
  10. spring源码之下载及构建
  11. 年终盘点丨2021边缘计算大事记
  12. delphi10.2 将网页页面带格式复制到word中。
  13. 手机计算机都无法上网,手机能上网但win7电脑不能上网怎么回事?
  14. LSDSLAM算法解析
  15. 终极选择---老男孩教育
  16. 前置:API:DSP:核心交换机:边界网关协议:边界:(防御)防火墙:负载均衡:摆渡机:名词解释
  17. 产品包装设计在品牌和营销中的重要性
  18. [Un-Routed Net Constraint Violation] 问题解决
  19. 计算机技术在注射模中的应用,CAD/CAM技术在注射模具设计,制造中的应用.pdf
  20. 23种设计模式UML类图图解

热门文章

  1. USB协议详解第6讲(USB描述符-端点描述符)
  2. c语言中未定义标识符IDD,一、Windows对话框—对话框及其模板
  3. 音频转文字软件有哪些?推荐几个录音转文字工具
  4. 授受不亲?中国古代男女浪漫社交
  5. 数字 2020和喜寿
  6. Cisco Catalyst 9000 系列,IOS-XE Release Bengaluru-17.06.01 ED
  7. typora上传图片
  8. Android(四十二):Drawable 转 Bitmap
  9. 【人因工程】熵值法求权重正反向化的分析
  10. 实战小米官网静态页面1:导航栏部分