【问题标题】:How to connect Vector1.end() to Vector2.begin(); ( with out .insert )如何将 Vector1.end() 连接到 Vector2.begin(); (没有 .insert )
【发布时间】:2016-04-19 17:46:44
【问题描述】:

我认为我们可以连接 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 = 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 个向量;

【问题讨论】:

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


【解决方案1】:

我了解到您想将 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);

【讨论】:

    猜你喜欢
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 2020-09-19
    • 2022-12-03
    • 1970-01-01
    相关资源
    最近更新 更多