如何有效地将向量添加到向量中
How to efficiently prepend a vector to a vector
我有 2 个这样的向量:
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
是作为遗留代码片段中函数的 std::vector
出现的我无法改变。它包含大量数据,我不想通过附加将其复制到 v2
。所以,我只是想将 v1
添加到 v2
之前,因为 v1
与 v2
相比非常小
这确实很管用:
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}
您遇到了什么问题?
我有 2 个这样的向量:
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
是作为遗留代码片段中函数的 std::vector
出现的我无法改变。它包含大量数据,我不想通过附加将其复制到 v2
。所以,我只是想将 v1
添加到 v2
之前,因为 v1
与 v2
这确实很管用:
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}
您遇到了什么问题?