Al copiar datos de un rango a otro, debe tener cuidado si existe una superposición parcial entre los rangos de origen y destino. Si el comienzo del rango de destino se superpone con la cola del rango de origen, una copia secuencial simple desdibujará los datos. La biblioteca de tiempo de ejecución de C tiene memmove
además de memcpy
para manejar dichos problemas de solapamiento.¿std :: copy maneja rangos superpuestos?
Supongo que std::copy
funciona igual que memcpy
, ya que no tiene en cuenta la superposición entre las regiones de origen y de destino. Si intenta desplazar objetos "hacia abajo" en un std::vector
con std::copy
, va a dañar los datos. ¿Hay un algoritmo AWL analógico de memmove
para manejar situaciones como esta? ¿O debería lanzar los míos con los iteradores inversos?
'std :: copy_backward' sería útil para tratar de implementar y análogo de' memmove'. Quiero tomar la verificación de la carga de solapamiento de la persona que llama. –