C++ 中容器的种类

server/2024/10/19 17:34:23/

1. 序列容器(Sequence Containers)

这类容器主要用于存储按顺序排列的元素,它们包括:

  • std::array:固定大小的数组,提供快速的固定大小数组操作。
  • std::deque:双端队列,可以在头尾两端快速插入和删除元素。
  • std::forward_list:单向链表,提供高效的元素插入和删除操作,但不支持随机访问。
  • std::list:双向链表,支持从任何位置快速插入和删除元素。
  • std::vector:动态数组,支持快速随机访问,尾部插入和删除也非常高效。

2. 关联容器(Associative Containers)

这些容器基于红黑树实现,主要用于存储有序数据,包括:

  • std::map:存储键值对,按键排序。
  • std::set:存储独一无二的元素,按元素排序。

3. 无序关联容器(Unordered Associative Containers)

基于哈希表实现,用于快速数据访问,不保持元素顺序:

  • std::unordered_map:存储键值对,不按键排序。
  • std::unordered_set:存储独一无二的元素,不按元素排序。

4. 容器适配器(Container Adaptors)

这些容器通过对其他容器类型的封装提供特定的数据结构功能:

  • std::queue:队列,先进先出(FIFO)数据结构。
  • std::stack:栈,后进先出(LIFO)数据结构。
  • std::flat_mapstd::flat_set:基于排序数组的映射和集合,通常实现为一个对有序向量的封装,提供比标准关联容器更优的空间利用率和访问速度。

5. 视图(Views)

  • std::span:提供对数组或其他连续存储的数据结构的引用视图,使得可以安全地访问底层数据而无需拷贝。
  • std::mdspan:提供对多维数据的视图,支持高效的数据操作和访问。

每种容器都有其特定的用途和优缺点,选择合适的容器可以大大提高程序的效率和性能。


http://www.ppmy.cn/server/23955.html

相关文章

第一届长城杯半决赛wp和AWD笔记

目录 AWD 渗透 cfs 单节点1 AWD笔记 AWD工具 文件比较工具 Web漏洞扫描工具 waf工具 代码审计工具 批量网站备份文件泄露扫描工具 cms通杀漏洞的利用 通杀脚本和批量提交flag脚本 防御流程 攻击流程 注意 AWD 解题思路] 首先就是fscan快速扫描对应C段&#xf…

解决jupyter中使用keplergl的visualization_data函数不显示图片的问题

解决jupyter中使用keplergl的visualization_data函数不显示图片的问题 运行下面的命令:. 首先确认已经安装keplergl pip install keplergl然后运行下面两条命令: jupyter nbextension install --py --sys-prefix keplergl jupyter nbextension enabl…

用docker方式安装openGauss数据库的事项记录

文章目录 (一)背景(二)安装(2.1)安装docker(2.2)安装openGauss (三)运行(3.1)运行openGauss镜像(3.2)连接open…

爱国者随身wifi VS格行随身wifi对比测评!随身wiif哪个品牌好用?排名第一名随身WiFi格行随身WiFi真的靠谱吗?随身WiFi热销榜第一名!

出门手机信号不好网络卡顿,手机流量不够用,相信这是很多朋友都会遇到的问题。为了解决这个问题更多的会选择随身wifi,但是市面上随身wifi品牌众多,有不知道该选择哪一款。今天就来看看爱国者随身wifi和格行随身wifi哪款更好用&…

SCSS的基本使用(一)

目录 一、使用&符号来引用父选择器 二、scss的语法 三、变量(Variables) 四、嵌套(Nesting) 五、mixin 和 include 六、extend 继承 七、import 与 Partials 八、if简单判断 九、if复杂判断 一、使用&符号来引用父…

智慧校园建设有哪些新策略?

在现有智慧校园建设方案中,智慧校园主要是用于解决学校日常事务,如学工管理,教工管理等,并利用数据分析,指导学校的一些决策行为。但随着新技术的不断发展,尤其是云计算、大数据、物联网、移动互联网、人工…

Kotlin作用域函数引发的遮蔽问题

前面讲了kotlin的it变量引起的遮蔽问题,见Kotlin it隐式变量的遮蔽问题,本篇聊聊作用域函数(scoped function)可能引起的遮蔽问题。 先来看一个简单的示例: fun test(): String {val s: String "asdf".al…

算法人生(12):从“优先级队列算法”到“”六点优先工作法”

算法思想和生活中很多解决问题的思想有着异曲同工之妙,让我们来看下今天的“优先级队列算法”可以怎么应用到我们的生活中吧! 优先级队列算法(Priority Queue Algorithm) 是一种特殊的数据结构,它在常规队列秉持着“先…