如何将Vector1.end()连接到Vector2.begin(); (带有.insert)

时间:2016-04-19 17:46:45

标签: c++ c++11 vector iterator stdvector

我认为我们可以将VEC1的末端连接到VEC2的开头,但是如何?

实施例

VEC1: (VEC1.begin()) - > ' H' - > ' A' - > ' P' - > ' P' - >' Y' - > (VEC1.end)

VEC2: (VEC2.begin()) - > ' 1' - > ' 2' - > ' 3' - > ' 4' - > (VEC2.end)

// VEC1.insert():但它意味着每次O(n)

我们.push_back()

VEC1 = HAPPY1234

VEC2 = 1234

所以无论如何都要像O(2)

那样做

VEC1: (VEC1.begin()) - > ' H' - > ' A' - > ' P' - > ' P' - >' Y' - > (VEC1.end)

。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 ___________________ | 。 。 。 。 。 。 。 | 。 。 。 。

。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 | 。 。 。 。 。 。 。 。 。 。 。 。 。 _____________ | 。 。 。

。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 | 。 。 。 。 。 。 。 。 。 。 。 。 。 | 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。

VEC2: (VEC2.begin()) - > ' 1' - > ' 2' - > ' 3' - > ' 4' - > (VEC2.end)

。 。 。 。 。 。 。 。 。 。 。 。 | 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 | 。 。 。 。 。 。 。 。

。 。 。 。 。 。 。 。 。 。 。 。 __________________________________。 。 。 。 。 。 。

VEC1 = HAPPY1234

VEC2 = NULL; (空)

那么请你能告诉我如何按地址连接2矢量;

1 个答案:

答案 0 :(得分:0)

据我所知,你想在vec1的末尾移动vec2的内容,但不进行任何复制。你可以使用std :: move:

#include <utility>

std::size_t size = a.size();
a.resize(size + b.size());
std::move(b.begin(), b.end(), a.begin() + size);