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++的拓扑排序实现

    template<typename T = CString, typename _Data = CString> struct Union_node//!< 节点 { Union_node() :nColor(0) {} std::vector<Union_node*> vecNodeSon; T key;//!< 关键数…

    C++ 2023年4月22日
    00
  • 【Visual Leak Detector】源码编译 VLD 库

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 源码的编译。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. VLD 库的依赖文件 2. 源码编译生成 VLD 库 3. 配置环境变量 4. 使用 VLD 库 1. VLD 库的依赖文件 以 vld2.5.1 版本为例,下载源码 后,源码包中各文件的用途可看本人另一…

    C++ 2023年4月24日
    00
  • C++ 入门

    001 c++ 如何工作 任何以 # 开头的语句,都是预处理语句,所谓的预处理语句,在编译之前,就已经被处理了 关键字 include:找到 <> 文件(通常称为“头文件”),然后将 <> 中的所有内容拷贝到现在的文件里 main()比较特殊,虽然它的返回值类型是 int,但它不一定需要返回值,如果不设置返回值,默认返回 0 <…

    C++ 2023年5月11日
    00
  • LeetCode 力扣 205. 同构字符串

    给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。 示例 1: 输入:s = “egg”, t = “add”输出:true示例…

    C++ 2023年4月18日
    00
  • 网络框架重构之路plain2.0(c++23 without module) 综述

    最近互联网行业一片哀叹,这是受到三年影响的后遗症,许多的公司也未能挺过寒冬,一些外资也开始撤出市场,因此许多的IT从业人员加入失业的行列,而且由于公司较少导致许多人求职进度缓慢,很不幸本人也是其中之一。自从参加工作以来,一直都是忙忙碌碌,开始总认为工作只是为了更好的生活,但是一旦工作停下来后自己就觉得失去了一点什么,所以很少有像最近这两个月左右空闲的时光。人…

    C++ 2023年4月17日
    00
  • NX二次开发:Checkmate例子根据dfa文件检查模型数据

    NX中的checkmate功能是用于检查模型、图纸数据的工具,在UGOPEN中有例子。手动操作可以检查已加载的装配下所有零部件,可以设置通过后保存模型,检查结果保存到Teamcenter中,默认保存在零组件版本下。 代码中可以设置多个检查规则。相关设置可以在用户默认设置中进行设置。 1 //============================= 2 //…

    C++ 2023年4月18日
    00
  • L1-080 乘法口诀数列*(使用C++)

    L1-080 乘法口诀数列 分数 20 全屏浏览题目 切换布局 作者 陈越单位 浙江大学   本题要求你从任意给定的两个 1 位数字 a1​ 和 a2​ 开始,用乘法口诀生成一个数列 {an​},规则为从 a1​ 开始顺次进行,每次将当前数字与后面一个数字相乘,将结果贴在数列末尾。如果结果不是 1 位数,则其每一位都应成为数列的一项。 输入格式: 输入在一行…

    C++ 2023年4月18日
    00
  • 13、c++使用单例模式实现命名空间函数

    本案例实现一个test命名空间,此命名空间内有两个函数,分别为getName()和getNameSpace(); 声明命名空间及函数 namespace test{ const std::string& getName()和(); const std::string& getNameSpace(); } 命名空间内实现单例类 实现一个单例类,…

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