如何将一个向量复制到另一个向量的末尾? [复制]

Posted

技术标签:

【中文标题】如何将一个向量复制到另一个向量的末尾? [复制]【英文标题】: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 以按值附加。通过引用传递它。 【参考方案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 更好

以上是关于如何将一个向量复制到另一个向量的末尾? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将项目从一个向量复制到另一个向量

如何在 C++ 中将两个向量复制到另一个向量

以相反的顺序将一个向量复制到另一个向量

将类成员向量的内容复制到另一个向量中,然后将它们交换回来

将矢量引用复制到另一个

C++ 将对象向量中的元素复制到具有此元素的向量中