在C++中,vector是一种动态数组,可以在运行时自由添加、删除元素。初始化vector是创建一个vector对象并为其分配内存空间的过程。以下是C++中初始化vector的几种方法:
- 默认构造函数
使用默认构造函数创建一个空的vector,如下所示:
std::vector<int> vec; // 创建空vector
这种方式可用于创建一个需要稍后填充的vector。
- 带有初始元素数量和值的构造函数
使用带有初始元素数量和值的构造函数创建vector,如下所示:
std::vector<int> vec(5, 0); // 创建一个包含5个int元素,每个元素都是0的vector
此方式将会创建包含5个值为0的int类型元素的vector。
- 带有初始元素数量的构造函数
使用带有初始元素数量的构造函数创建vector,如下所示:
std::vector<int> vec(8); // 创建一个包含8个未初始化int元素的vector
此方式将会创建一个包含8个未初始化int类型元素的vector。
- 带有初始元素列表的构造函数
使用带有初始元素列表的构造函数创建vector ( 在C++中,使用{}
来初始化vector是一种方便的方法,也称为列表初始化。),如下所示:
std::vector<int> vec = {1, 2, 3}; // 创建一个包含3个int元素,值分别为1、2、3的vector
此方式将会创建一个包含3个int类型元素,值分别为1、2、3的vector。
- 复制或移动构造函数
使用复制或移动构造函数可以从一个已存在的vector创建新的vector。如下所示:
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2(vec1); // 创建一个与vec1的内容相同的vector
std::vector<int> vec3(std::move(vec2)); // 使用移动构造函数将vec2的所有资源转移给vec3
这种方式使用较少,但是在某些情况下可以使用它们来优化代码性能。
需要注意的是,在初始化vector时提供的初始值,需要与vector模板参数类型匹配或者能够隐式转换为vector模板参数类型。如果提供的初始值数量超过了vector预留的存储空间,则vector会自动分配更大的存储空间以容纳所有元素。