C++ STL(第六篇:容器--vector)

本文主要介绍C++ STL中的序列式容器vector,包括其实现原理、动态扩容机制、元素操作以及扩容带来的性能影响。vector作为动态数组,支持随机访问,当元素增多时会自动扩容,但扩容过程涉及内存复制,有一定的性能开销。
摘要由CSDN通过智能技术生成

1、概述

今天开始整理STL使用最广的容器了。同时这一部分也是我看了两遍,还有很多没有看懂的地方。最近准备硬着头皮,把这个山头给拿下,争取在第三遍能看懂吧。

容器,置物之所也。STL容器实际上就是把一些常用的数据结构给实现出来,方便大家使用。而常用的数据结构不外乎array、list、tree、stack、queue、hash table、set、map…等等。

根据 “数据在容器中的排列” 特性,这些数据结构可分为序列式关联式两种。今天就整理部分序列式容器的内容。

2、序列式容器

所谓序列式容器,其中的元素都可序,但未必有序。C++语言本身提供了一个序列式容器array,STL另外提供了vector,list、deque、stack、priority-queue等等。今天就先整理vector。

2.1、vector实现

vector的数据安排以及操作方式,与array非常相似。两者唯一差别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变,需要更换更大的空间,需要客户端自己操作。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素

vector的大致结构如下:

template<class T, class Alloc = alloc> //使用默认的空间分配器
class vector
{
public:
	//类型信息,我们之前整理的 trains 萃取技术,用于模板
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值