【问题标题】:How can I copy a vector to the end of another vector? [duplicate]如何将一个向量复制到另一个向量的末尾? [复制]
【发布时间】:2021-01-23 18:49:51
【问题描述】:

很长一段时间以来,我一直在研究我认为只是一个简单的功能。我们应该使用push_back(),但我无法让它工作。

这是我现在拥有的:

void append(const vector<int>& v1, vector<int> v2)
{
    for (int x : v1)
        v2.push_back(x);
}

void println(const vector<int>& v)
{
    for (int x : v)
        cout << x << ' ';
    cout << endl;
}

int main()
{
    vector <int> v1(3, 15);
    vector <int> v2(3, 25);
    append(v1, v2);
    println(v1);
    println(v2);
}

【问题讨论】:

  • Vectors 有一个 insert 函数已经可以做到这一点。
  • 您正在传递 v2 以按值附加。通过引用传递它。

标签: c++


【解决方案1】:

void append(const vector&lt;int&gt;&amp; v1, vector&lt;int&gt; v2) 中的v2 是传递的内容的副本,因此修改它不会影响传递的内容。

您应该使用引用(添加&amp;)让函数修改传递的内容。

void append(const vector<int>& v1, vector<int>& v2) // add & before v2
{
    for (int x : v1)
        v2.push_back(x);
}

如果您不希望使用push_backstd::copy 很有用。

#include <algorithm>

void append(const vector<int>& v1, vector<int>& v2)
{
    std::copy(v1.begin(), v1.end(), std::back_inserter(v2));
}

【讨论】:

  • 在这种情况下v2.insert(v2.end(), v1.begin(), v1.end()) 可能比std::copy 更好
猜你喜欢
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多