我认为我们可以将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矢量;
答案 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);