在 O(1) 时间内将右值向量附加到向量

append a rvalue vector to a vector in O(1) time

我想知道如何在恒定时间 (O(1)) 内将右值向量附加到另一个向量。 我知道使用 std::insertstd::move 的方法,但是有没有什么方法可以在 O(1) 时间内将 std::vector<T>&& 附加到 std::vector<T>&

为什么右值对此很重要? Big-O 表示法计算流程中完成的操作数。无论那些操作是复制还是移动,如果执行的操作数与源列表中的项目数成正比,那么它是一个 O(n) 过程。

并且如果您要 copy/move 将一个连续的元素序列转换为另一个连续的元素序列,并且结果是连续的,则该过程必须是 O(n)(至少),其中n 是源序列中的元素数。即使它对源元素进行了 memcpy,某些 T 序列的 memcpy 也是序列中 T 的数量的 O(n)。