C++STL容器的比较


前言

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 必须相等。


总结

加油加油

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值