C++STL容器的比较

本文介绍了C++ STL中的容器,主要关注序列容器如vector、deque和list,以及相联容器,包括map和set。序列容器提供动态数组的功能,其中vector适合尾部操作,deque支持首尾快速插入删除,而list擅长任意位置的插入删除。相联容器则用于存储键值对,map不允许重复键且键为const,set中键值相等。这些容器在不同的场景下各有优势,理解它们的特性对于优化C++代码至关重要。

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


前言

STL是c++的标准模板库,模板分为类模板和函数模板,我们所说的容器是构成STL标准模板库的一部分,STL容器大致上分为两大部分:序列容器和相联容器,而相联容器又分为两大部分:排序容器和哈希容器


一、序列容器

序列容器里面都可用放什么东西?例如存放int double float char 类型的元素,除此之外还可以存放自己定义的结构体元素。

1、vector动态数组:它的长度是可以改变的,在尾部插入和删除元素的时间复杂度为o(1),支持随机访问,(其实就是数组的升级版),但是在中间某个位置插入和删除元素时间复杂度为o(n),为什么?就算它支持随机访问,能快速找到要插入和删除的位置,但是插入或者删除后要进行元素的移动。

vector<int>a(20)//定义一个vector  a容量为20
vector.push_back(1)//把1插入到尾部
vector.pop_back()//删除尾部元素
//insert函数需要借助迭代器实现在中间插入一个或者多个元素
//erase函数需要借助迭代器实现在中间删除一个或多个元素

2、deque双端队列容器:它在首位插入和删除元素的时间复杂度都是O(1),在中间插入和删除的时间复杂度和vector一样,支持随机访问。

3、list双向链表容器:不支持随机访问,但是在任意位置上插入和删除的时间复杂度都是O(1)。

二、相联容器:排序容器和哈希容器

相联容器里面存放的是啥?不像序列容器,相联容器顾名思义就是存放的是一个个存在联系的键值对,并且默认根据键的大小升序排序。

1、map映射容器的特点:map容器存储的各个键值对,既不能重复,也不能被修改,键的类型会用const修饰。
2、set容器的特点:使用 set 容器存储的各个键值对,要求键 key 和值 value 必须相等。


总结

加油加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值