STL之vector

Posted manch1n

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL之vector相关的知识,希望对你有一定的参考价值。

  因为在写一些算法题,一般的在线编译器好像都是用vector作为参数,所以有必要对vector总结一下:

7.3 vector

  vector的本质是一个动态数组(dynamic array),类似于c用malloc分配空间。在<vector>头文件内,vector的定义如下:

namespace std
{
    template <typenameT,typename Allocator = allocator<T>>
    class vector;
}

  注意:第二个模板参数可省略,用默认的内存分配器就好了。

7.3.1 vector的能力

  因为内存是连续分配的,所以提供随机访问的能力,如果在末尾添加或删除元素,则性能相当的好。我想,因该是将类成员的size直接减1(原谅我还看不懂满是宏的源码==)。然而在中间删除或添加则会导致O(n)的操作时间,或者当size满了之后再添加也需要O(n)的时间,所以提前定好容量显得至关重要。

  下面介绍初始化函数:

vector<Elem> c          //空vector
vector<Elem> c(c2)     //构造一个与c2vector的拷贝,包括容量与元素
vector<Elem> c=c2     //同上
vector<Elem> c(rv)    //使用右值来构造(move)
vector<Elem> c=rv    //同上
vector<Elem> c(n)     //用elem的default构造函数来初始化n个elelm,容量大小为n。
vector<Elem> c(n,elem) //elem是类型Elem的一个实例,使用它的拷贝构造函数来初始化n个Elem。
vector<Elem> c(beg,end) //使用[beg,end)之间的迭代器来初始化。
vector<Elem> c(initlist)     //使用初始化列来初始化
vec.~vector()            //析构函数

7.3.2 vector的操作

 

//TODO

以上是关于STL之vector的主要内容,如果未能解决你的问题,请参考以下文章

STL之vector4

STL之vector

STL之vector

超详细STL之基于源码剖析vector实现原理及注意事项

超详细STL之基于源码剖析vector实现原理及注意事项

STL之vector容器详解