在C++中,如果你使用size
来初始化一个vector
,那么你实际上已经为这个vector
指定了一定数量的元素,并且这些元素被默认初始化了。当你之后使用push_back()
方法添加元素时,这些元素会被添加到已经初始化的元素之后,而不是替换或清除这些元素。
举一个例子,假设我们有以下代码:
cpp#include <iostream> #include <vector> int main() { std::vector<int> vec(5); // 初始化一个大小为5的向量,每个元素默认为0 vec.push_back(10); // 添加元素10到向量的末尾 for (int i : vec) { std::cout << i << " "; // 输出向量的元素 } return 0; }
运行此代码将输出:
shell0 0 0 0 0 10
如你所见,最初的向量由五个默认值0组成,然后10被添加到这些元素的后面,使得总元素数量变成了六个。这就是使用push_back()
在已经通过size
初始化的向量上添加元素的效果。
如果你的目标是创建一个空的向量并只通过push_back()
添加元素,你应该使用不带参数的构造函数来初始化向量:
cppstd::vector<int> vec; // 初始化一个空的向量 vec.push_back(10); // 添加元素10 vec.push_back(20); // 添加元素20 for (int i : vec) { std::cout << i << " "; // 输出向量的元素 }
这段代码将输出:
shell10 20
这样,向量中只包含了通过push_back()
方法添加的元素。
2024年7月3日 23:21 回复