如何将 Vector1.end() 连接到 Vector2.begin(); (没有 .insert )
How to connect Vector1.end() to Vector2.begin(); ( with out .insert )
我认为我们可以将 VEC1 的末端连接到 VEC2 的开头,但是如何?
例子
VEC1 :
(VEC1.begin()) -> 'H' -> 'A' -> 'P' -> 'P' -> 'Y' -> (VEC1.end)
VEC2:
(VEC2.begin()) -> '1' -> '2' -> '3' -> '4' -> (VEC2.end)
.
// VEC1.insert() :但这意味着我们 .push_back() 每次 O(n)
VEC1 = 快乐 1234
VEC2 = 1234
.
.
所以它无论如何都要做 O(2)
VEC1 :
(VEC1.begin()) -> 'H' -> 'A' -> 'P' -> 'P' -> 'Y' -> (VEC1.end)
。 . . . . . . . . . . . . . . . . . . . . . ___________________| . . . . . . . | . . . .
。 . . . . . . . . . . . . . . . . . . . . . | . . . . . . . . . . . . . _____________| . . . .
。 . . . . . . . . . . . . . . . . . . . . . | . . . . . . . . . . . . . | . . . . . . . . . . . . . . . . .
VEC2:
(VEC2.begin()) -> '1' -> '2' -> '3' -> '4' -> (VEC2.end)
。 . . . . . . . . . . . | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | . . . . . . . .
。 . . . . . . . . . . . __________________________________。 . . . . . .
.
.
VEC1 = 快乐 1234
VEC2 = NULL; (空)
.
那么,请告诉我如何通过地址或其他方式连接 2 个向量;
我了解到您想将 vec2 的内容移动到 vec1 的末尾,但不进行任何复制。你可以使用 std::move:
#include <utility>
std::size_t size = a.size();
a.resize(size + b.size());
std::move(b.begin(), b.end(), a.begin() + size);
我认为我们可以将 VEC1 的末端连接到 VEC2 的开头,但是如何?
例子
VEC1 : (VEC1.begin()) -> 'H' -> 'A' -> 'P' -> 'P' -> 'Y' -> (VEC1.end)
VEC2: (VEC2.begin()) -> '1' -> '2' -> '3' -> '4' -> (VEC2.end)
.
// VEC1.insert() :但这意味着我们 .push_back() 每次 O(n)
VEC1 = 快乐 1234
VEC2 = 1234
.
.
所以它无论如何都要做 O(2)
VEC1 : (VEC1.begin()) -> 'H' -> 'A' -> 'P' -> 'P' -> 'Y' -> (VEC1.end)
。 . . . . . . . . . . . . . . . . . . . . . ___________________| . . . . . . . | . . . .
。 . . . . . . . . . . . . . . . . . . . . . | . . . . . . . . . . . . . _____________| . . . .
。 . . . . . . . . . . . . . . . . . . . . . | . . . . . . . . . . . . . | . . . . . . . . . . . . . . . . .
VEC2: (VEC2.begin()) -> '1' -> '2' -> '3' -> '4' -> (VEC2.end)
。 . . . . . . . . . . . | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | . . . . . . . .
。 . . . . . . . . . . . __________________________________。 . . . . . .
.
.
VEC1 = 快乐 1234
VEC2 = NULL; (空)
.
那么,请告诉我如何通过地址或其他方式连接 2 个向量;
我了解到您想将 vec2 的内容移动到 vec1 的末尾,但不进行任何复制。你可以使用 std::move:
#include <utility>
std::size_t size = a.size();
a.resize(size + b.size());
std::move(b.begin(), b.end(), a.begin() + size);