[C++学习]标准库类型vector总结

描述

标准库类型vector表示对象的集合,其所有对象类型都相同。要想使用vector,需要包含对应的头文件:

#include <vector>
using std::vector;

vector是一个类模板,模板本身不是类和函数,相反可以看作编译器生成类或函数编写的一份说明。编译器根据根据模板创建类或函数的过程称之为实例化(instantiation)

vector<int> ivec; // 保存int类型的对象
vector<Picture> picture_vec; // 保存用户自定义类的对象
vector<vector<string>> string_vec; // 保存向量元素为vector的对象

C++11可写成vector<vector>,过去需要添加一个空格在外层vector和其他元素类型之间,写成vector<vector >的形式。

定义和初始化

// 空vector,潜在元素类型为T, 执行默认初始化
vector<T> vec1;
// vec2包含vec1的所有元素的副本 
vector<T> vec2(vec1);
vector<T> vec2 = vec1;
// vec3包含n个重复元素,元素值为value
vector<T> vec3(n, value);
// vec4包含n个重复执行了默认初始化的对象
vector<T> vec4(n);
// vec5包含了初始值个数的元素
vector<T> vec5{a, b, c, d...};
vector<T> vec5 = {a, b, c, d...};

值初始化举例:

vector<int> vec1(10); // vec1有10个元素,每个值都为0
vector<int> vec2{10}; // vec2有一个元素,值为10

vector<int> vec3(10, 1); // vec3有10个元素,每个值都为1
vector<int> vec4{10, 1}; // vec4有两个元素,分别为10、1

向vector对象添加元素

尾部添加push_back函数:

vector<int> num_vec;
for (int i = 0; i < 10; i++)
{
    num_vec.push_back(i);
}

vector内对象的索引

string对象一样,vector对象的下标也是从0开始,类型为size_type。不能用下标形式添加元素

迭代器使用方法有单独总结,点击查看

vector的其他操作

函数 描述
v.empty() v中没有任何元素返回true,否则返回false
v.size() 返回v中元素个数
v.push_back() 尾部添加元素
v[n] 返回v中第n个位置元素的引用(从0开始)
v1 == v2 v1和v2相等当且仅当它们的元素数量相同且对应位置的元素值都相同
posted @ 2019-09-20 13:32  Dumbledore  阅读(166)  评论(0编辑  收藏  举报