Информация об изменениях

Сообщение Re: Копирование вектора (std::vector) от 28.10.2019 11:57

Изменено 28.10.2019 12:19 rg45

Re: Копирование вектора (std::vector)
Здравствуйте, RussianFellow, Вы писали:

RF>Есть некоторая структура Measure_Simulation, которая включает в себя достаточно много полей типа int, long, long double, char*, bool.

RF>И есть вектор (std::vector) measuresvector, каждый элемент которого относится к типу Measure_Simulation. Этот вектор имеет 40 тысяч таких элементов.
RF>Я копирую содержимое вектора measuresvector в другой вектор measuresvector2, используя следующий код:

RF>
RF>std::back_insert_iterator<std::vector <Measure_Simulation> >  toV(measuresvector2);
RF>std::copy(measuresvector.begin(),measuresvector.end(),toV);
RF>

RF>Этот процесс копирования занимает 20 секунд.

RF>Можно ли как-то сделать это копирование быстрее? Какой код для этого следует использовать?


Можно. Для этого нужно использовать такой код:
measurevector2 = measurevector;


Следующим шагом можно подумать, а действительно ли здесь необходимо копирование. Если окажется, что вместо копирования подходит перемещение, то время сведется вообще к нулю.
Re: Копирование вектора (std::vector)
Здравствуйте, RussianFellow, Вы писали:

RF>
RF>std::back_insert_iterator<std::vector <Measure_Simulation> >  toV(measuresvector2);
RF>std::copy(measuresvector.begin(),measuresvector.end(),toV);
RF>

RF>Этот процесс копирования занимает 20 секунд.

RF>Можно ли как-то сделать это копирование быстрее? Какой код для этого следует использовать?


Можно. Для этого нужно использовать такой код:

measurevector2 = measurevector;


Следующим шагом можно подумать, а действительно ли здесь необходимо копирование. Если окажется, что вместо копирования подходит перемещение, то время сведется вообще к нулю.