Сообщение 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>Этот процесс копирования занимает 20 секунд.
RF>Можно ли как-то сделать это копирование быстрее? Какой код для этого следует использовать?
Можно. Для этого нужно использовать такой код:
Следующим шагом можно подумать, а действительно ли здесь необходимо копирование. Если окажется, что вместо копирования подходит перемещение, то время сведется вообще к нулю.
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>Этот процесс копирования занимает 20 секунд.
RF>Можно ли как-то сделать это копирование быстрее? Какой код для этого следует использовать?
Можно. Для этого нужно использовать такой код:
Следующим шагом можно подумать, а действительно ли здесь необходимо копирование. Если окажется, что вместо копирования подходит перемещение, то время сведется вообще к нулю.
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;
Следующим шагом можно подумать, а действительно ли здесь необходимо копирование. Если окажется, что вместо копирования подходит перемещение, то время сведется вообще к нулю.