将数据从一个范围复制到另一个范围时,如果源范围和目标范围之间存在部分重叠,则必须小心。如果目标范围的开始与源范围的尾部重叠,则普通的顺序复制会混淆数据。除了memcpy
之外,C运行时库还有memmove
来处理这种重叠问题。是否std :: copy处理重叠范围?
我假设std::copy
的工作方式与memcpy
相似,因为它不考虑源地区和目的地区域之间的重叠。如果您尝试使用std::copy
将std::vector
中的对象“向下”移动,则会损坏数据。是否有一个STL算法模拟memmove
来处理这种情况?或者我应该用反向迭代器推出自己的产品?
'std :: copy_backward'在试图实现和模拟'memmove'时很有用。我想要检查来电者的重叠负担。 –