std::copy()
не будет создавать новые элементы в контейнере назначения.Это означает, что вам нужно создать destVect
с правильным размером:
vector<int> sourceVect = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
vector<int> destVect(sourceVect.size() - 1);
Если вы не можете создать его с правильным размером, просто измените его размер позже, в точке, где вы знаете размер:
destVect.resize(sourceVect.size() - 1);
Теперь вы можете скопировать:
copy(sourceVect.begin() + 1, sourceVect.end(), destVect.begin());
Однако вы можете просто создать destVect
с правильным содержимым для начала.Вам не нужно ничего копировать вручную:
vector<int> sourceVect = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
vector<int> destVect(sourceVect.begin() + 1, sourceVect.end());
Это самый быстрый способ сделать это и (что еще важнее) не подвержен ошибкам.Если вы делаете std::copy
, но размер контейнера назначения не достаточно велик, вы в конечном итоге записываете в нераспределенную память (переполнение буфера.)