【发布时间】:2021-09-04 02:59:51
【问题描述】:
标准库提供std::copy,可以看作是C 语言memcpy() 的泛化/泛化。它还维护了memcpy() 的要求,因为范围 [first, last) 与范围 [d_first, d_first + std::distance(first, last)) 不相交;否则我们有未定义的行为。
我的问题:是否有std::memmove 的通用版本(即,它没有提出该要求并且通常使用临时缓冲区来实现)?如果没有,怎么会?
【问题讨论】:
-
std::copy并不是std::memcpy的真正概括。它们有非常不同的语义。如std::copy复制对象,而std::memcpy进行逐字节复制。 -
@bolov
memmove无论重叠在哪个方向都是安全的。std::copy_backward不是。
标签: c++ memcpy idioms memmove stdcopy