STL之vector的用法

vector的定义

定义一维数组:vector< int > v;

定义二维数组:vector<int> v[100];   或  vector<vector<int> > v;(前者一维的长度已固定为100,另一维长度可变,二后者两个维度的长度均可变)

vector的元素访问

两种方式:下标访问或迭代器访问

下标:对于vector<int>v; 直接v[0],v[7]即可访问指定元素(下标从0到v.size -1)

迭代器:*(v.begin()+i) 等价于 v[i]        (注意 * 号)

注意:①只有vector 和 string 可以使用“迭代器 + 整数”的方法,其他容器不行。

           ②迭代器不是数字,不能赋值给int类型。如下错误代码示例:

//错误代码1:
int i = v.begin();
for(i = v.begin() ; i <v.size; i++) cout<<v[i]<<endl;

//错误代码2:
v [v.begin()+2];//迭代器不是数字,无法通过这种方式访问v[2]

//正确访问第i个元素的方式:
v[i]    或    *v.begin()+i

vector常用函数

v.push_back(x):在v末尾插入x

v.pop_back(): 删除v当前末尾元素

v.size():获取vector当前元素个数。返回类型为unsigned

v.clear() :清空vector中所有元素。时间复杂度为O(n),n为元素个数

v.insert(it , x):在迭代器it处插入x。如:v.insert(v.begin() + 2 , -1)表示将-1插入v[2]的位置。假设原本为 1 3 5 7 9,插入后为1 3 -1 5 7 9       (再次强调,①迭代器不是整型  ②*(v.begin()+i) 等价于 v[i] )

v.erase():用于删除元素。有两种用法:删除单个元素,和 删除某区间内所有元素。时间复杂度均为O(N)

        ①删除单个元素:v.erase(it),it为迭代器。

                例如,v.erase(v.begin()+2),删除元素v[2].

        ②删除区间内所有元素:v.erase(it_first , it_last),删除左闭右开 [ it_first , it_last ) 内的所有元素。it_first , it_last均为迭代器。(不是整数!)

                例如v.erase( v.begin()+1, v.begin()+5 ), 表示删除v[1],v[2],v[3],v[4]。

其中v.push_back()v.pop_back()的时间复杂度为o(1),clear, insert, erase时间复杂度均为o(n) 

v.size返回类型为unsigned,可以赋值给整型,其他函数返回值为void,不可赋值给整型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值