Quando si copiano dati da un intervallo a un altro, è necessario fare attenzione se si verifica una sovrapposizione parziale tra l'intervallo di origine e quello di destinazione. Se l'inizio dell'intervallo di destinazione si sovrappone alla coda dell'intervallo di origine, una semplice copia sequenziale condannerà i dati. La libreria di runtime C ha memmove
oltre a memcpy
per gestire tali problemi di sovrapposizione.std :: copy gestisce intervalli sovrapposti?
Suppongo che il numero std::copy
funzioni come memcpy
, in quanto non si tiene conto della sovrapposizione tra le regioni di origine e di destinazione. Se provi a spostare gli oggetti "in basso" in un std::vector
con std::copy
, i dati verranno corretti. Esiste un algoritmo STL analogico di memmove
per gestire situazioni come questa? O dovrei girare il mio con iteratori inversi?
'std :: copy_backward' sarebbe utile nel tentativo di implementare e analogare' memmove'. Voglio controllare la sovrapposizione del carico del chiamante. –