Memmove和C ++ 11有什么区别 std::move.
what is the different between memmove and c++11 std::move?
memmove
和 c++11 std::move
有什么区别?是否可以在重叠的内存位置上使用std::move
?哪种方法具有更高的速度性能?
几种方法:
- std::move 调用赋值运算符,而 memmove 不调用。因此,memmove 不适合非 POD 类型。
- std::move 适用于任何C++容器类型,而 memmove 仅适用于那些将元素线性存储在连续内存位置的容器类型(例如数组和 std::vector)。
- std::move 不适用于与左侧源范围重叠的目标范围(为此使用 move_backwards),而 memmove 适用于所有重叠范围。
在将 POD 类型复制到右重叠范围的情况下,memmove 和 std::move 可能具有类似的性能。在所有其他情况下,两者中只有一种是合适的,因此您无法真正比较性能。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- std::is_convertible 和 std::convertible_to 之间的区别(在实践中)?
- std::enable_if 和 std::enable_if_t 有什么区别?
- "owned pointer"和 std::shared_ptr 的"stored pointer"有什么区别?
- std::ranges::begin 和 std::begin 有什么区别?
- std::stable_partition() 和 std::p artition() 有什么区别?
- std::fabs(a * b) 和 std::fabs(a) * std::fabs(b) 之间的区别
- 普通的右值引用和 std::forward 返回的引用有什么区别?
- std::tie 和 std::forward_as_tuple 有什么区别
- printf() 和 std::cout 在指针方面的区别
- malloc 和 calloc 与 std::string 之间的区别
- std::random_device和std::mt19937_64之间有什么区别
- 使用 std::move 将参数传递给函数,如果该参数声明为按值传递或使用移动操作数 &&,是否有区别?
- 打印一个带有静态 int 的函数,有一个 std::cout 和多个 std::cout 有什么区别?
- std::bit_cast 和 std::start_lifetime_as 之间有什么有用的区别吗?
- Python的bisect.bisect_left和C++的std::upper_bound的区别
- 互锁变量访问(在布尔值上)和 std::atomic_flag 之间的区别
- std::string [] 运算符和 at() 之间的区别
- Memmove和C ++ 11有什么区别 std::move.