Memmove和C ++ 11有什么区别 std::move.

what is the different between memmove and c++11 std::move?

本文关键字:区别 std 什么 move Memmove      更新时间:2023-10-16

memmove和 c++11 std::move有什么区别?是否可以在重叠的内存位置上使用std::move?哪种方法具有更高的速度性能?

几种方法:

  1. std::move 调用赋值运算符,而 memmove 不调用。因此,memmove 不适合非 POD 类型。
  2. std::move 适用于任何C++容器类型,而 memmove 仅适用于那些将元素线性存储在连续内存位置的容器类型(例如数组和 std::vector)。
  3. std::move 不适用于与左侧源范围重叠的目标范围(为此使用 move_backwards),而 memmove 适用于所有重叠范围。

在将 POD 类型复制到右重叠范围的情况下,memmove 和 std::move 可能具有类似的性能。在所有其他情况下,两者中只有一种是合适的,因此您无法真正比较性能。