提问者:小点点

push_back在C++中是如何工作的?


我脑子里有个问题。 假设我有两个向量,分别叫做vector1和Vector2。

vector <int> vector1{1,2};
vector <int> vector2{3,4};

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

vector <vector <int>> vector_2d;
vector_2d.push_back(vector1);
vector_2d.push_back(vector2);

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

另外,我尝试多次将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);

共1个答案

匿名用户

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

通过阅读你的代码。

将两个“内部”向量添加到外部向量中,得到两个元素。

这就是在外部向量上调用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]));

另外,我尝试多次将vector1添加到一个名为new_vector的新二维向量中。 但它似乎只添加了一次vector1。 为什么会出现这种情况呢?

不是的。

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

确实有。 你一定是看错了。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(push_back|c++|中|工作)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?