vector

2021-02-17  本文已影响0人  吴健民IT

STL中的函数都必须使用:变量名.函数名()表示,例如vi.push_back();




vector翻译为向量,使用“变长数组”的叫法更容易理解。在考试题中,有时会碰到普通数组会超内存的情况,这时候使用vector会让问题的解决便捷许多。

使用vector要添加:#include<vector>     using namespace std;

定义:vector<typename> name;     这个定义其实相当于一维数组name[SIZE],只不过其长度可以变化,这里的typename可以是任何类型,例如int,double,char,结构体等,也可以是STL容器但在定义时记得在>>符号之间加上空格

举个例子:vector<int> name;

                  vector<double> name;

                  vector<vector<int> > name;               //>>之间要加空格,多用于二维数组(矩阵)----------即name[ ] 中的每一个元素都是一个vector(所以还要定义一个vector一维向量,然后将 v push_back到name 向量中),初学者可以把二维vector数组当作两个维都可变长的二维数组。--------------------------------------------见下例题

vector容器内元素的访问:

(1)通过下标访问

对一个定义为vector<typename>vi的vector容器来说,直接访问vi[index]即可 (如vi[0]、vi[1]),这里的下标是从0到vi.size()-1

(2)通过迭代器访问

迭代器可以理解为一种类似指针的东西,其定义为vector<typename>::iterator it;     it 就是vector<typename>::iterator型的变量,并且通过 *it来访问vector里的元素


既然上面提到了begin()函数的作用为取 vi 的首元素地址,那么这里就要提到end()函数。和begin()不同的是,end()并不是取vi的尾元素地址,而是取尾元素地址的下一个地址,end()作为迭代器末尾标志,不储存任何元素。

毕竟美国人的思维比较习惯左闭右开。

最后再提一下,在常用STL容器中,只有在vectorstring中,才允许使用vi.begin()+3这种迭代器加上整数的写法。

pop_back()

有添加就有删除元素,pop_back()用以删除vector的尾元素,时间复杂度是O(1)

clear() 函数: 用来删除vector中的所有元素

insert() : 

             insert(it,x)用来向vector的任意迭代器 it 处插入一个元素x


erase()有两种用法:     ①删除单个元素       ②删除一个区间内的所有元素

上一篇下一篇

猜你喜欢

热点阅读