STL容器之vector

vector是C++中使用频率非常高的容器之一,本文总结了vector的常用用法,仅作为编程时的参考,详细的用法可以参考http://www.cplusplus.com/reference/vector/vector/

vector实现

STL没有规定vector应该怎么实现,一般采用动态数组来实现,每次插入时如果数组溢出,就将动态数组的大小(capacity)增加1倍(如0->1->2->4或者3->6->12初始值取决于vector的初始大小)。动态数组大小变化时原来的iterator全部失效,不能继续使用了。vector的size大小为存储的元素个数,与capacity无关。

constructor

vector<int> data; //创建一个空的vector,元素类型为int
vector<int> data(5); //创建一个包含5个元素的vector
vector<int> data(5, -1); //创建一个包含5个元素的vector,并将元素均初始化为-1
vector<int> data{1,2,3,4,5};// 创建一个包含5个元素的vector,并将元素分别初始化为1,2,3,4,5
vector<int> data2 = data;//拷贝构造
vector<vector<int>> data(3,vector<int>(4,-1));// 构建3*4的二维数组,元素初始化为-1

Iterator

vector使用数组实现,所以vector的iterator属于random access iterator,可以进行it+=10, it2-it1操作

容量查询

data.size();//返回vector中存储的元素个数
data.empty();//判断vector是否为空,空返回true,不空返回false
data.capacity();//返回动态数组的大小

元素访问

data.begin();//返回指向第一个元素的iterator
data.end();//返回指向最后一个元素后面的iterator
data.front();//返回第一个元素的引用
data.back();//返回最后一个元素的引用
data[i];//返回第i个元素的引用

修改

data.push_back(9);//在末尾插入元素9
data.pop_back();//删除末尾的元素
data.insert(iterator1,9);//在iterator1的位置插入元素9,iterator1原来数以及后面的数均后移一位,iterator1后面的元素全部失效
data.insert(data.iterator1, data2.head_iterator, data2.tail_iterator);//在data的iterator1位置插入head_iterator~tail_iterator之间(不含最后一个)的全部元素
data.erase(iterator);//删除iterator指向的元素,后面的元素前移,后面的iterator失效
data.erase(head_iterator,tail_iterator);//删除head_iterator到tail_iterator之间的元素,后面的iterator失效

你可能感兴趣的:(编程语言,读书笔记)