【发布时间】:2010-12-29 12:09:25
【问题描述】:
将数据从一个范围复制到另一个范围时,您必须小心源范围和目标范围之间是否存在部分重叠。如果目标范围的开头与源范围的尾部重叠,则普通的顺序副本将使数据出现乱码。 C 运行时库除了memcpy 之外还有memmove 来处理此类重叠问题。
我假设std::copy 的工作方式类似于memcpy,因为它不考虑源区域和目标区域之间的重叠。如果您尝试使用std::copy 将std::vector 中的对象“向下”移动,则会损坏数据。是否有类似memmove 的 STL 算法来处理此类情况?还是我应该使用反向迭代器自己动手?
【问题讨论】: