模型部署02 C++容器

容器分类:

array:
* array大小固定,不可改变
* 在内存中是连续的
* 获取元素的复杂度是常数,与array元素个数无关
* 是对原始数组的封装,也可以获取原始数组的指针
* 如果数组大小固定,尽量使用array,而不是使用C++原生数组,因为array可以使用标准库的算法

vector:
* vector是一个动态数组,可以随意增加元素
* 与array一样,vector在内存中是连续的,对应的内存空间会随着元素的增加而增加
* 获取元素的复杂度是常数,与vector的大小无关
* 在vector末尾增加、删除元素的复杂度是常数,与vector的大小无关
* 在vector中间增加、删除元素的复杂度是线性的,与vector的大小有关
* 可以使用迭代器和算法

deque:

* 动态数组,和vector类似,但是deque是双端的,可以在头部和尾部进行插入和删除操作
* 与vector不同,deque在内存中是分段连续的,每段内存都是连续的,所以在头部和尾部插入和删除元素都很快
* 获取元素的复杂度是常数
* 在头部和尾部插入和删除元素的复杂度是常数
* 在中间插入和删除元素的复杂度是线性的
* 支持迭代器和算法

list:

* 动态大小
* list是一个双向链表,支持快速的插入和删除操作
* list不支持随机访问,不支持下标运算符

set:

* set是一种关联式容器
* 根据元素的值,自动排序,重复元素会被自动去重
* 不支持随机访问,不支持下标运算符
* 支持各种迭代器和算法

map:

* map是一种关联式容器,它的元素是key-value对(std::pair),key是唯一的,value可以重复
* map中的元素是按key自动排序的
* 使用key访问元素

stack:

* stack 是一种容器适配器,遵循后进先出(LIFO)的原则
* stack 本身不是容器,它是基于容器实现的(如vector、list、deque等)
* 所有的操作都在栈顶进行(top)
* stack 本身没有迭代器

queue:

* queue是一种容器适配器,遵循先进先出(FIFO)的原则
* queue的底层容器可以是deque、list
* 元素只能从队尾压入,从队首弹出(排队)
* queue本身没有提供迭代器

priority_queue(优先级队列):

* 允许按照优先级来插入和删除元素
* 优先级最高的元素总是位于队首(最大值在队首)
* 本身没有提供迭代器

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值