STL中基本容器string、vector、list、deque、set、map之间的区别

本文详细介绍了STL中的基本容器,包括string、vector、list、deque、set和map。string适用于动态字符串,vector擅长随机访问和尾部操作,list适合频繁插入删除,deque则在两端操作和随机访问间取得平衡。set和map为无序容器,基于树结构实现,用于存储唯一元素和键值对。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在STL中基本容器有: string、vector、list、deque、set、map

set 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问;

set:集合, 用来判断某一个元素是不是在一个组里面,使用的比较少;
map:映射,相当于字典,把一个值映射成另一个值,如果想创建字典的话使用它好了;

底层采用的是树型结构,多数使用平衡二叉树(RB-Tree)实现,查找某一值是常数时间,遍历起来效果也不错,只是每次插入值的时候,会重新构成底层的平衡二叉树,效率有一定影响。

string、vector、list、deque、set 是有序容器。

1、string

string 是basic_string<char> 的实现,在内存中是连续存放的。为了提高效率,都会有保留内存,如string s= "abcd",这时s使用的空间可能就是255,当string再次往s里面添加内容时不会再次分配内存.直到内容>255时才会再次申请内存,因此提高了它的性能。

当内容>255时,string会先分配一个新内存,然后再把内容复制过去,再复制先前的内容。

对string的操作,如果是添加到最后时,一般不需要分配内存,所以性

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dvlinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值