标签:需要 stl 操作 init 分配 == todo typename 随机
因为在写一些算法题,一般的在线编译器好像都是用vector作为参数,所以有必要对vector总结一下:
vector的本质是一个动态数组(dynamic array),类似于c用malloc分配空间。在<vector>头文件内,vector的定义如下:
namespace std { template <typenameT,typename Allocator = allocator<T>> class 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() //析构函数
//TODO
标签:需要 stl 操作 init 分配 == todo typename 随机
原文地址:https://www.cnblogs.com/manch1n/p/10317672.html