东莞网站系统哪里好南阳微网站制作
news/
2025/9/23 21:51:32/
文章来源:
东莞网站系统哪里好,南阳微网站制作,seo优化网站的注意事项,购物网站建设开题报告一、顺序性容器
简述#xff1a;顺序容器为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖元素的值#xff0c;而是与元素加入容器时的位置相对应。所有顺序容器都提供了快速顺序访问元素的能力
1.vector(向量)
基本概念和介绍
对于vector容器#xff0c;它…一、顺序性容器
简述顺序容器为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖元素的值而是与元素加入容器时的位置相对应。所有顺序容器都提供了快速顺序访问元素的能力
1.vector(向量)
基本概念和介绍
对于vector容器它的数据结构与数组非常类似但是他们之间的不同之处是数组是静态空间一旦配置了就不能更改vector却可以进行动态分配随着元素的插入和删除内部的空间也会灵活变动就和C语言中的malloc和C中的new是一个道理不用害怕空间不足而一开始就定义一个很大的数组节省了内存空间
2.deque双端队列
基本概念和介绍
deque容器为双端队列可以对其两端的数据进行操作因为它没有capacity属性因此不会像vector那样”旧空间不足而重新配置一块更大空间然后复制元素再释放旧空间”因此deque没有必须要提供所谓的空间保留(reserve)功能。
3.list
1list是CSTL容器中的顺序容器这里的顺序容器区别于关联容器指的是元素在容器中的位置与大小无关。list和vector不同vector是顺序存储的内存是连续的list底层实际上是双向链表list的内存是分散的内存可以在各个位置分布。
2基于双向链表的数据结构list具有array、vector、deque等不具备的优势在任意位置插入和删除元素的时间复杂度O(1)移动元素的效率也很高。因为元素之间是通过指针联系的在某个元素间插入一个元素改变那指针的指向就可以了。
3但是正因为底层是双向链表无法像vector那样通过**下标[]**直接访问元素需要从头尾遍历元素找到元素。
4.array(数组)
array是C11中新增的容器它与其他容器不同的是它的大小是固定的无法动态扩展或收缩只允许访问或者替换存储的元素。
二、关联式容器
简述关联式容器是非线性的树结构更准确的说是二叉树结构。各元素之间没有严格的物理上的顺序关系也就是说元素在容器中并没有保存元素置入容器时的逻辑顺序。但是关联式容器提供了另一种根据元素特点排序的功能这样迭代器就能根据元素的特点“顺序地”获取元素。元素是有序的集合默认在插入的时候按升序排列。
关联容器包括
map集合set映射multimap多重集合multiset多重映射
set
set以RBTree作为底层容器所得元素的只有key没有valuevalue就是key不允许出现键值重复所有的元素都会被自动排序不能通过迭代器来改变set的值因为set的值就是键
map
map以RBTree作为底层容器所有元素都是键值存在不允许键重复所有元素是通过键进行自动排序的map的键是不能修改的但是其键对应的值是可以修改的
三、容器适配器
stack(堆栈)
stack为堆栈其内部元素都是需要先进后出FILO的也就是说只有栈顶的元素top才可以被访问到
queue(队列)
queue为队列它和stack堆栈的正好相反栈是先进后出而队列则是先进先出(FIFO)。看到这里是不是想起了我们前面学过的一个顺序性容器deque双端队列下面来区分一下他们之间的不同之处
1、queue可以访问两端但是只能修改队头而deque可以访问两端并且可以在队首和队尾删除和插入元素
2、deque可以从两端入队但是queue只能从队尾入队
3、对于弹出队内元素deque拥有pop_front(删除队头元素)以及pop_back(删除队尾元素)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913996.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!