vector

本文深入探讨了C++标准模板库中的Vector容器,详细解释了其作为动态数组的底层实现,包括线性连续空间的利用,以及在不同操作如随机访问、插入和删除时的时间复杂度。此外,还介绍了Vector的常用操作方法,如构造、清空、检查空状态、添加和删除元素等,并提到了其在扩容时的机制。
摘要由CSDN通过智能技术生成

vector是顺序容器的一种,它是可变长的动态数组,支持随机访问,使用时需要包含头文件vector。

底层实现是数组,线性连续的空间

在vector容器中,根据下标随机访问某个元素的时间是常数,在尾部添加一个元素的时间大多也是常数,在中间插入和删除元素的,要移动多个元素,因此速度较慢,时间复杂度和元素个数成正比。

vector容器在实现时,分配的空间一般大于存放元素所需要的空间。例如:哪怕里面只有一个元素,也会分配32个元素的存储空间,这样在尾部插入元素时,不必每次都重新分配空间,直接写入即可,如果到达现有的最大空间,会触发扩容,在vs下是1.5倍扩容,在gcc下是2倍扩容,扩容后将原来的数据复制过去在添加元素,释放原空间。

vector的操作

//元素类型为T
vector<T> v;  //无参构造函数,初始化为空
vector<T> v(n); //有参,初始化为有n个元素
vector<T> v(n,const T& val)  //初始化容器为n个元素,每个元素是T类型且值为val
vector(iterator first,iterator last)  //first 和 last 可以是其他容器的迭代器。一般来说,本构造函数初始化的结果就是将 vector 容器的内容变成与其他容器上的区间 [first, last) —致

void clear()  //删除所有元素
bool empty()  //判断是否为空
void pop_back() //删除末尾的元素
void push_back(const T& val) //将val插入末尾
int size();  //返回元素个数
void swap(vector<T> &v) //将自身与另一个同类型的容器互换

iterator erase(iterator i) //删除迭代器i指向的元素,返回值是被删除元素后面的元素的迭代器


T& front()  //返回容器中第一个元素的引用
T& back()  //返回容器中最后一个元素的引用

vector还可以嵌套形成可变长的二维数组
vector<vector<int>>
用法与普通的二维数组相似;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值