.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++ 中工作?的主要内容,如果未能解决你的问题,请参考以下文章
如何使 id3lib 在 C++ Builder 10.2 中工作?
单类型和双类型变量如何在 Matlab 中的同一代码副本中工作,就像 C++ 中的模板一样