vector小结
程序员文章站
2022-05-11 12:44:54
...
一、vector的基本属性:
(1) vector是C++中的一个模板类,是我们常用到的一个容器,它的底层实现是C++的内置类型数组。标准库使用需要头文件#include<vector>,vector是一个类模板,vector<int>才是一种数据类型。它的存储空间与数组一样都是连续的。vector默认为空,在windows下的Visual studio系列工具里它的增长方式为0 -> 1 -> 2 -> 4 -> 8 -> 16 .......。
二、.vector的定义和初始化:
(1)vector<typename> v1;v1此时容量为空,故v1[0 ] = 0是错误的。
(2)vector<typename> v2(v1)或 v2 = v1或 vector<typename> v2(v1.begin(),v1.end()); 此时v2是v1的一个副本。
(3)vector<typename> v3(n ,i) v 3 初始化为包含n个值为<typename>i的元素。
(4)vector<typename> v4(n) v4 初始化为含有n个值为<typename>NULL的元素。
(5)int a[5] = {0,1,2,3,4}; vector <int> v5(a,a+5);此时用数组a中的五个元素初始化V5;
(6)vector<typename> v6(v5);此时V6是v5的拷贝。
三、值得初始化规则**:**
(1)如果没有指定元素初始化,则标准库自行提供一个元素进行初始化。
(2)如果容器中存放的是含有构造函数的类类型的元素,标准库使用该类类型的构造函数初始化。
(3)如果存放的是不含有构造函数的类类型元素,则标准库提供一个带初始值的对象,使用这个对象进行值初始化。
**四、vector对象的几种易忽略的操作:**
(1)v.resize(2*v.size(),0)将v的容量扩大二倍,并初始化为0;
(2)v.insert(pointer ,number, content) 向pointer指定的位置插入number个content指定的值。
(3)v.erase(pointer1,pointer2)删除p1到p2之间指定的元素,包括p1所指的元素。
(4)对于const vector<typename> 只能用 vector <typename>:: const_iterator 类型的指针来访问。
(5) p = v.end();p指向v的最后一个元素的下一个位置。
(6)v.clear();删除v中的所有元素。