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

Posted

技术标签:

【中文标题】.push_back 如何在 C++ 中工作?【英文标题】:How .push_back works in C++? 【发布时间】:2020-07-15 13:15:58 【问题描述】:

我有一个问题。假设我有两个向量,分别称为 vector1 和 vector2。

vector <int> vector11,2;
vector <int> vector23,4;

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

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

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);

【问题讨论】:

你怎么知道它只添加了一次vector1?你是怎么衡量的? push_back == 推到后面。 “为什么它没有将多个vector1添加到新行或背靠背?”你正是这样做的。您将vector1的副本添加到new_vector的后面 我不明白这个问题 请在调试器下运行您的程序并检查new_vector。与打印相比,它会让您更好地理解生成的对象结构。 【参考方案1】:

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]));

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

不是。

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

确实如此。你一定是看错了。

【讨论】:

谢谢,你是对的。我的代码中的其他地方出现了错误,我的错。

以上是关于.push_back 如何在 C++ 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

常量字符串如何在 C++ 中工作

如何使 id3lib 在 C++ Builder 10.2 中工作?

单类型和双类型变量如何在 Matlab 中的同一代码副本中工作,就像 C++ 中的模板一样

Linux,C++,dup(socket) 是不是可以从另一个未分叉的进程中工作(如果不是如何启用它)?

&符号(&)符号如何在c ++中工作? [复制]

Opencv:'centers'参数如何在 cv::kmeans 中工作?