C++序列式容器

首先STL是系统提供好的库,仅需使用无需过多的了解内部实现!!!

序列式容器:容器中元素的位置由进入容器的时间和地点决定。

注:vector、deque均支持随机访问,而list不支持随机访问

一、vector容器:动态数组,支持随机访问

注:需引入<vector>头文件

Vectors are a kind of sequence containers. As such, their elements are ordered following a strict linear sequence.

Vector containers are implemented as dynamic arrays; Just as regular arrays, vector containers have their elements stored in contiguous storage locations, which means that their elements can be accessed not only using iterators but also using offsets on regular pointers to elements.

But unlike regular arrays, storage in vectors is handled automatically, allowing it to be expanded and contracted as needed.

Vectors are good at:

 
  • Accessing individual elements by their position index (constant time).
  • Iterating over the elements in any order (linear time).
  • Add and remove elements from its end (constant amortized time).

vector模型展示:

1、vector动态增长原理:

vector原空间不够,导致新元素放不进去,vector会自动申请一块更大的空间,并把原空间的内容拷贝到新空间,随后把新元素加入,并释放原空间。

注:vector默认按两倍扩充空间,但当数据量大时,扩充倍数不定!

2、巧用vector swap 减缩空间

目的:为了是实现数据减少的同时,容器具体的空间也减少

vector<int>(v).swap(v);

注:首先使用拷贝构造函数,利用v初始化匿名对象,完了利用匿名对象调用swap接口去交换匿名对象和v的空间

交换的本质:交换两个容器的指针

二、deque容器:双端数组,支持随机访问 

模型展示:

  三、list容器:双向链表,不支持随机访问

容器模型展示:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Star星屹程序设计

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

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

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

打赏作者

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

抵扣说明:

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

余额充值