c++ vector(向量)使用方法详解(顺序访问 vector 的多种方式)
vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector
是 C++ STL 的一个重要成员,使用它时需要包含头文件:
一、vector 的初始化:可以有五种方式,举例说明如下:
(1) vector<int> a(10); / /定义了 10 个整型元素的向量(尖括号中为元素类型名,它可以是
任何合法的数据类型),但没有给出初值,其值是不确定的。
(2)vector<int> a(10,1); / /定义了 10 个整型元素的向量,且给出每个元素的初值为 1
(3)vector<int> a(b); / /用 b 向量来创建 a 向量,整体复制性赋值
(4)vector<int> a(b.begin(),b.begin+3); / /定义了 a 值为 b 中第 0 个到第 2 个(共 3 个)元素
(5)int b[7]={1,2,3,4,5,9,8};vector<int> a(b,b+7); / /从数组中获得初值
二、vector 对象的几个重要操作,举例说明如下:
(1)a.assign(b.begin(), b.begin()+3); //b 为向量,将 b 的 0~2 个元素构成的向量赋给 a
(2)a.assign(4,2); //是 a 只含 4 个元素,且每个元素为 2
(3)a.back(); //返回 a 的最后一个元素
(4)a.front(); //返回 a 的第一个元素
(5)a[i]; //返回 a 的第 i 个元素,当且仅当 a[i]存在 2013-12-07
(6)a.clear(); //清空 a 中的元素
(7)a.empty(); //判断 a 是否为空,空则返回 ture,不空则返回 false
(8)a.pop_back(); //删除 a 向量的最后一个元素
(9)a.erase(a.begin()+1,a.begin()+3); / /删除 a 中第 1 个(从第 0 个算起)到第2 个元素,也
就是说删除的元素从 a.begin()+1 算起(包括它)一直到 a.begin()+ 3(不包括它)
(10)a.push_back(5); //在 a 的最后一个向量后插入一个元素,其值为5
(11)a.insert(a.begin()+1,5); //在 a 的第 1 个元素(从第 0 个算起)的位置插入数值5,如 a
为 1,2,3,4,插入元素后为 1,5,2,3,4
(12)a.insert(a.begin()+1,3,5); //在 a 的第 1 个元素(从第 0 个算起)的位置插入 3 个数,其
值都为 5
(13)a.insert(a.begin()+1,b+3,b+6); //b 为数组,在a 的第 1 个元素(从第0 个算起)的位置
插入 b 的第 3 个元素到第 5 个元素(不包括 b+6),如 b 为 1,2,3,4,5,9,8 ,插入元素后为
1,4,5,9,2,3,4,5,9,8
(14)a.size(); //返回 a 中元素的个数;
(15)a.capacity(); //返回 a 在内存中总共可以容纳的元素个数
(16)a.rezize(10); / /将 a 的现有元素个数调至 10 个,多则删,少则补,其值随机
(17)a.rezize(10,2); / /将 a 的现有元素个数调至 10 个,多则删,少则补,其值为 2
(18)a.reserve(100); //将 a 的容量(capacity)扩充至 100,也就是说现在测试 a.capacity();
的时候返回值是 100.这种操作只有在需要给 a 添加大量数据的时候才显得有意义,因为这将
避免内存多次容量扩充操作(当 a 的容量不足时电脑会自动扩容,当然这必然降低性能)
(19)a.swap(b); //b 为向量,将 a 中的元素和 b 中的元素进行整体性交换