在 O(1) 时间内将右值向量附加到向量
append a rvalue vector to a vector in O(1) time
我想知道如何在恒定时间 (O(1)) 内将右值向量附加到另一个向量。
我知道使用 std::insert
和 std::move
的方法,但是有没有什么方法可以在 O(1) 时间内将 std::vector<T>&&
附加到 std::vector<T>&
。
为什么右值对此很重要? Big-O 表示法计算流程中完成的操作数。无论那些操作是复制还是移动,如果执行的操作数与源列表中的项目数成正比,那么它是一个 O(n) 过程。
并且如果您要 copy/move 将一个连续的元素序列转换为另一个连续的元素序列,并且结果是连续的,则该过程必须是 O(n)(至少),其中n 是源序列中的元素数。即使它对源元素进行了 memcpy
,某些 T
序列的 memcpy
也是序列中 T
的数量的 O(n)。
我想知道如何在恒定时间 (O(1)) 内将右值向量附加到另一个向量。
我知道使用 std::insert
和 std::move
的方法,但是有没有什么方法可以在 O(1) 时间内将 std::vector<T>&&
附加到 std::vector<T>&
。
为什么右值对此很重要? Big-O 表示法计算流程中完成的操作数。无论那些操作是复制还是移动,如果执行的操作数与源列表中的项目数成正比,那么它是一个 O(n) 过程。
并且如果您要 copy/move 将一个连续的元素序列转换为另一个连续的元素序列,并且结果是连续的,则该过程必须是 O(n)(至少),其中n 是源序列中的元素数。即使它对源元素进行了 memcpy
,某些 T
序列的 memcpy
也是序列中 T
的数量的 O(n)。