將數據從一個範圍複製到另一個範圍時,如果源範圍和目標範圍之間存在部分重疊,則必須小心。如果目標範圍的開始與源範圍的尾部重疊,則普通的順序複製會混淆數據。除了memcpy
之外,C運行時庫還有memmove
來處理這種重疊問題。是否std :: copy處理重疊範圍?
我假設std::copy
的工作方式與memcpy
相似,因爲它不考慮源地區和目的地區域之間的重疊。如果您嘗試使用std::copy
將std::vector
中的對象「向下」移動,則會損壞數據。是否有一個STL算法模擬memmove
來處理這種情況?或者我應該用反向迭代器推出自己的產品?
'std :: copy_backward'在試圖實現和模擬'memmove'時很有用。我想要檢查來電者的重疊負擔。 –