3

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

4

1 回答 1

6

几种方法:

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

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

于 2013-10-17T09:39:43.860 回答