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