如何将一个向量复制到另一个向量的末尾? [复制]
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<int>& v1, vector<int> v2)
中的v2
是传递的内容的副本,因此修改它不会影响传递的内容。
您应该使用引用(添加&
)让函数修改传递的内容。
void append(const vector<int>& v1, vector<int>& v2) // add & before v2
for (int x : v1)
v2.push_back(x);
如果您不希望使用push_back
,std::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
更好以上是关于如何将一个向量复制到另一个向量的末尾? [复制]的主要内容,如果未能解决你的问题,请参考以下文章