#include <vector>

本文详细解析了C++ STL中vector容器的工作原理及使用方法,包括动态内存管理、迭代器操作、常见成员函数如size、empty、clear等,以及如何通过push_back和pop_back进行元素的增删。

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

vector

\(vector\)可以理解成动态数组,动态占用空间,动态释放空间。

声明方式

vector<int> a;
vector<int>::iterator it;

\(vector\)支持任意访问,跟数组一样直接调用下标。但是不支持任意插入,只支持在末端插入。\(vector\)动态占用空间和释放空间都是二的若干次方的占用和释放,也就是若实际占用等于最大占用,最大占用空间将翻一倍。如果实际占用空间低于最大占用空间的\(\dfrac{1}{4}\),那么最大占用空间就会变成原来的一半。所以\(vector\)比数组慢得多。接下来我们以保存\(int\)类型的数据的\(vector\)为例:

a.size()

返回\(a\)的实际长度。

a.empty()

返回一个\(bool\)类型,表示\(a\)是否为空。

a.clear()

\(a\)全部清空。

迭代器

\(vector\)的迭代器支持随机访问,可以让迭代器加上一个整数,与指针的移动类似。把两个迭代器相减会返回这两个迭代器之间的距离。

a.begin()/a.end()

返回\(a\)的首迭代器和尾迭代器,尾迭代器为空。

a.front()/a.back()

返回\(a\)的第一个元素和最后一个元素,等价于a[0]/a[a.size()-1]。

a.push_back(x)/a.pop_back()

\(x\)插入\(a\)的尾端/弹出\(a\)尾端的元素。

遍历a的两种方法

for(int i=0;i<a.size();i++)
    cout<<a[i]<<endl;
for(vector<int>::iterator it=a.begin();it!=a.end();it++)
    cout<<*it<<endl;

第一种复杂度为\(O(n^2)\)
第二种方法对大多数\(stl\)都有用。

转载于:https://www.cnblogs.com/AKMer/p/9890052.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值