C++容器(vector、deque、list、map)

(1) vector:将元素置于一个动态数组中,可以随机存储元素(也就是用索引直接存取)。

数组尾部添加或删除元素非常迅速。但在中部或头部就比较费时。

*代码演示:*

取:
C++容器(vector、deque、list、map)
at在下标越界时会抛出异常,我们能捕获异常进行处理;而[]下标越界会让程序直接终止;

C++容器(vector、deque、list、map)
构造函数:

cbegin, cend, crbegin, crend返回的是常量迭代器,不能通过迭代器修改vector元素的值。

C++容器(vector、deque、list、map)

C++容器(vector、deque、list、map)

C++容器(vector、deque、list、map)

C++容器(vector、deque、list、map)

插入(insert):值得注意的是,insert函数返回值是一个迭代器,指向新添加的第一个元素:
C++容器(vector、deque、list、map)

删除(erase):
C++容器(vector、deque、list、map)

删除一段内容时,前闭后开
C++容器(vector、deque、list、map)
front函数,返回第一个元素的引用
C++容器(vector、deque、list、map)
crbegin(),crend() 倒着输出
C++容器(vector、deque、list、map)
C++容器(vector、deque、list、map)
C++容器(vector、deque、list、map)
C++容器(vector、deque、list、map)
C++容器(vector、deque、list、map)
C++容器(vector、deque、list、map)
C++容器(vector、deque、list、map)

(2) deque:“double end queue”的缩写,也就是双端队列。

*deque的实现相比于vector有些复杂,但本质仍然是优化过的动态数组,只不过相比于单纯的动态数组,在前面添加或删除元素非常快了。*

*可以随机存储元素。*头部和尾部添加或删除元素都非常快(略慢与vector)。但在 中间插入元素比较费时(和vector差不多)。

*代码演示:*

可以在前面添加和删除、可以随机存取元素([]、at):
C++容器(vector、deque、list、map)

(3) list:本质就是链表,所以自然具有了链表的属性。

*不能随机存取元素(也就是list无法用索引存取元素)*。在任何位置插入和删除元素都比较迅速。(在任何位置插入删除元素的时间相同,在元素头部操作慢于deque,在元素尾部操作慢于deque和vector)
C++容器(vector、deque、list、map)

(4) string:

C++容器(vector、deque、list、map)
C++容器(vector、deque、list、map)

(5) map/multimap:使用“红黑树”实现,是一种高度平衡的二叉树。

内部元素是成对的“key/value”,也就是“键值/实值”,内部元素依据其键值自动排序,map内部相同的键值只能出现一次,multimap则可以出现多次。

*代码演示:*
C++容器(vector、deque、list、map)

原文链接:https://www.cnblogs.com/grasscarp7/p/17375328.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++容器(vector、deque、list、map) - Python技术站

(0)
上一篇 2023年5月5日
下一篇 2023年5月6日

相关文章

  • C++的引用变量作为函数参数

    一、问题引入 在C++的中新增一个特性:按引用传递变量,虽然与按传递变量的地址可以实现相同的结果,但引用有其独特的地方。 引用传递: 引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量的别名。 通过引用变量用作参数,函数将使用原始数据,而不是其副本。 二、解决过程 举例说明: #include <iostream> using nam…

    C++ 2023年4月17日
    00
  • 【Visual Leak Detector】VS 中 VLD 输出解析

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 使用方式 2. 输出报告 1. 使用方式 在 VS 中使用 VLD 的方法可以查看另外一篇博客:在 VS 2015 中使用 VLD。 2. 输出报告 在 VS 中使用 VLD 时的输出报告,与在 QT 中使用时是一致的,输出内容的解析…

    C++ 2023年4月17日
    00
  • 驱动开发:探索DRIVER_OBJECT驱动对象

    本章将探索驱动程序开发的基础部分,了解驱动对象DRIVER_OBJECT结构体的定义,一般来说驱动程序DriverEntry入口处都会存在这样一个驱动对象,该对象内所包含的就是当前所加载驱动自身的一些详细参数,例如驱动大小,驱动标志,驱动名,驱动节等等,每一个驱动程序都会存在这样的一个结构。 首先来看一下微软对其的定义,此处我已将重要字段进行了备注。 typ…

    C++ 2023年4月18日
    00
  • Qt源码阅读(四) 事件循环

    事件系统 文章为本人理解,如有理解不到位之处,烦请各位指正。 @ 目录 事件系统 什么是事件循环? 事件是如何产生的? sendEvent postEvent 事件是如何处理的? 事件循环是怎么遍历的? 事件过滤器 event 夹带私货时间 Qt的事件循环,应该是所有Qter都避不开的一个点,所以,这篇博客,咱们来了解源码中一些关于Qt中事件循环的部分。先抛…

    C++ 2023年4月18日
    00
  • 【Visual Leak Detector】配置项 ReportFile

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 配置文件中配置项 ReportFile 的使用方法。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 配置文件使用说明 2. 设置输出文件的路径 2.1 测试代码 2.2 ReportFile 为空时的输出 2.3 ReportFile 指定中文文件名时的输出 2.…

    C++ 2023年4月18日
    00
  • 32位进程设置大地址(3G)空间

    对应32位应用,我们不做任何设置,我们能用的地址空间其实不足2G,有两种方式设置大地址空间: 一、设置链接选项 二、工具editbin 1.开启方法 (1)利用管理员身份运行”Visual Studio 工具命令提示”程序; (2)输入命令:editbin /LARGEADDRESSAWARE D:\xxx.exe 2.检查是否开启成功 (1)利用管理员身份…

    C++ 2023年5月6日
    00
  • 第三部分:Spdlog 日志库的实现原理

    Spdlog 是一个快速、异步的 C++ 日志库,被广泛应用于 C++ 项目中。在这篇文章中,我们将探讨 Spdlog 日志库的实现原理。 Spdlog 的结构 Spdlog 由五个主要组件构成:Loggers、Sinks、Formatters、Async Logger 和 Registry。每个组件都扮演着不同的角色,共同协作记录并输出日志消息。 Logg…

    C++ 2023年4月18日
    00
  • 【Visual Leak Detector】配置项 AggregateDuplicates

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 配置文件中配置项 AggregateDuplicates 的使用方法。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 配置文件使用说明 2. 设置是否显示重复的泄漏块 2.1 测试代码 2.2 AggregateDuplicates = no 时的输出 2.3 A…

    C++ 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部