vector

作者: 吴健民IT | 来源:发表于2021-02-17 16:37 被阅读0次

    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()有两种用法:     ①删除单个元素       ②删除一个区间内的所有元素

    相关文章

      网友评论

          本文标题:vector

          本文链接:https://www.haomeiwen.com/subject/thyixltx.html