cpp容器和ptr

文章详细对比了C++中不同容器如array、vector、deque、list、map、set等的特性,包括内存管理、访问方式、效率影响。特别提到了动态内存分配对vector的影响,以及deque的碎片内存结构。此外,还讨论了各种智能指针如auto_ptr、shared_ptr、weak_ptr和unique_ptr在资源管理中的作用。
摘要由CSDN通过智能技术生成

array数组连续内存随机访问固定大小
vector 连续内存 随机访问 动态大小,不够时候从新申请内存,然后拷贝,会多整一点,所以尾巴有多出来的空位,尾巴存放快
deque碎片内存随机访问动态大小,多个碎片内存组成,所以头尾存放,只需要整头尾的那两个内存,但是遍历效率有影响。

list 双链表双向遍历不能随机访问只遍历
forward_list单链表单向遍历
queue FIFO deque list
priority_queue二叉的最大堆vector deque
stack vector deque ist

map红黑树 key:value key不可重复,按key进行排序
multimap红黑树 key可重复,value也可
unordered_map 哈希表可插可删不可改未排序,迭代器慢
unorderedmulti_map哈希表key可重复

set红黑树 key=value不可重复出现,排序
multiset红黑树 key可重复
unordered_set 哈希表未排序,迭代器慢
unordered_multiset key可重复
tuple元素数量不限,类型不限pair元素数量2,类型不限

auto_ptr 独占 废弃
shared_ptr shared_count 访问权生命控制权
weak_ptr weak_count 访问权无控制权,解决循环依赖问题,lock访问
unique_ptr独占,可用move reset转移
用make_xxx,不用new
ptr在栈上,对象在堆里,出了栈帧自动销毁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值