如何高效地在向量前添加另一个向量?

3

I have 2 vectors like so:

std::vector<unsigned char> v1;
std::vector<unsigned char> v2;

它们每个都有一些数据。

如果我想要将v2附加到v1,我知道以下是正确的方法。 v1.insert(v1.end(), v2.begin(), v2.end());

问题:
如何将v1前置到v2中?
v2.insert(v2.begin(), v1.begin(), v1.end()) 在这里似乎不起作用?

我知道我可能会得到使用std::deque的建议,但问题是v2作为旧代码中函数的输出传递给我的,并且包含大量我不想通过附加拷贝到v2的数据。所以,我只想将v1前置到v2,因为v1相对于v2非常小。

最初的回答:

如果您想将一个向量前置到另一个向量中,请使用下面的代码。

v2.insert(v2.begin(), v1.begin(), v1.end());
1个回答

6

这确实非常有效:

std::vector<int> a{ 1,2,3,4 };
std::vector<int> b{ 5, 6, 7 };
a.insert(a.begin(), b.begin(), b.end());
// a is  {5, 6, 7, 1, 2, 3, 4}

你遇到了什么问题?


它运行良好。我愚蠢地犯了一个无关的错误,感到困惑。 - AdeleGoldberg
1
这个在clang上可以很好地工作,但在使用gnu编译的arm上会出问题。我的vector a 很大,我是否需要对a进行一些调整或处理? - AdeleGoldberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接