【问题标题】:How .push_back works in C++?.push_back 如何在 C++ 中工作?
【发布时间】:2023-03-22 20:07:02
【问题描述】:

我有一个问题。假设我有两个向量,分别称为 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 分配给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。与打印相比,它会让您更好地理解生成的对象结构。

标签: c++ vector push-back


【解决方案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添加到新行或背靠背?

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

【讨论】:

  • 谢谢,你是对的。我的代码中的其他地方出现了错误,我的错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 2016-02-04
  • 2016-06-13
  • 1970-01-01
相关资源
最近更新 更多