memmove
和 c++11有什么区别std::move
?我可以std::move
在重叠的内存位置上使用吗?哪种方法具有更高的速度性能?
问问题
2090 次
1 回答
6
几种方法:
- std::move 调用赋值运算符,而 memmove 没有。因此,memmove 不适用于非 POD 类型。
- std::move 适用于任何 C++ 容器类型,而 memmove 仅适用于将元素线性存储在连续内存位置的容器类型(例如数组和 std::vector)。
- std::move 不适用于与左侧源范围重叠的目标范围(为此使用 move_backwards),而 memmove 适用于所有重叠范围。
在将 POD 类型复制到右重叠范围的情况下,memmove 和 std::move 可能具有相似的性能。在所有其他情况下,两者中只有一个是合适的,因此您无法真正比较性能。
于 2013-10-17T09:39:43.860 回答