.push_back 如何在 C++ 中工作?

efe*_*373 0 c++ vector push-back

我心里有个疑问。假设我有两个向量,称为向量 1 和向量 2。

vector <int> vector1{1,2};
vector <int> vector2{3,4};
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个名为 vector_2d 的二维向量,并使用 push_back 函数将这两个向量分配到我的新二维向量中。

vector <vector <int>> vector_2d;
vector_2d.push_back(vector1);
vector_2d.push_back(vector2);
Run Code Online (Sandbox Code Playgroud)

C++ 如何决定将 vector2 分配给 vector_2d 的第二行?为什么它没有将这两个向量背靠背添加?

我还尝试将 vector1 多次添加到名为 new_vector 的新二维向量中。但它似乎只添加 vector1 一次。为什么会这样?为什么它没有将多个 vector1 添加到新行或背靠背?

vector <vector <int>> new_vector;
new_vector.push_back(vector1);
new_vector.push_back(vector1);
new_vector.push_back(vector1);
new_vector.push_back(vector1);
Run Code Online (Sandbox Code Playgroud)

Ast*_*ngs 5

C++ 如何决定将 vector2 分配给 vector_2d 的第二行?

通过阅读你的代码。

您将两个“内部”向量添加到外部向量,从而产生两个元素。

这就是调用push_back外部向量时会发生的情况。

为什么它没有将这两个向量背靠背添加?

因为你没有告诉它。

那将是:

vector <vector <int>> vector_2d;
vector_2d.push_back(vector1);
std::copy(std::begin(vector2), std::end(vector2), std::back_inserter(vector_2d[0]));
Run Code Online (Sandbox Code Playgroud)

我还尝试将 vector1 多次添加到名为 new_vector 的新二维向量中。但它似乎只添加 vector1 一次。为什么会这样?

不是。

为什么它没有将多个 vector1 添加到新行或背靠背?

它做了。你一定是看错了。