码迷,mamicode.com
首页 > 其他好文 > 详细

STL之vector

时间:2019-01-25 01:08:12      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:需要   stl   操作   init   分配   ==   todo   typename   随机   

  因为在写一些算法题,一般的在线编译器好像都是用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   操作   init   分配   ==   todo   typename   随机   

原文地址:https://www.cnblogs.com/manch1n/p/10317672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!