|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.10.2019, 14:49 | #1 |
Форумчанин
Регистрация: 19.05.2009
Сообщений: 153
|
Копирование вектора (std::vector)
Есть некоторая структура Measure_Simulation, которая включает в себя достаточно много полей типа int, long, long double, char*, bool.
И есть вектор (std::vector) measuresvector, каждый элемент которого относится к типу Measure_Simulation. Этот вектор имеет 40 тысяч таких элементов. Я копирую содержимое вектора measuresvector в другой вектор measuresvector2, используя следующий код: Код:
Можно ли как-то сделать это копирование быстрее? Какой код для этого следует использовать? |
28.10.2019, 14:53 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
Просто присваивайте или используйте конструктор копирования.
|
28.10.2019, 17:05 | #3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Но весьма вероятно, что скорости от этого не прибавится.
При таких объемах лучше подумать а надо ли делать копию. |
28.10.2019, 17:08 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
Прибавится, пуш_бекать каждый элемент так себе идея. А конструктор копирования может как минимум сразу память выделить.
|
28.10.2019, 17:50 | #5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Согласен, но все равно, 20 сек на 40К выделений что-то как-то медленно.
Оно наверно и отладочная сборка, но все же... |
30.10.2019, 16:16 | #6 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
пример: Код:
1. конструкторы и operator= по возможности noexcept тогда вектор сможет задействовать оптимальный мув для элементов, в случае реалока. 2. при копировании в уже существующий вектор, не нужно писать вот такое порно: Код:
и самое главное: нужно заранее застолбить память, с помощью reserve |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Java. Vector<Vector<String>>, вывод в текстовый файл. | Artsiom | Помощь студентам | 0 | 05.12.2016 16:00 |
Копирование интервала std::vector | sVasilich | Общие вопросы C/C++ | 10 | 20.06.2013 15:29 |
Даны два вектора b=(b1,b2,...,b6),x=(x1,x2,...,x6) и матрица А(6х6).написать программу вычисления длины вектора Ax-b. | infern_o | Паскаль, Turbo Pascal, PascalABC.NET | 10 | 21.03.2013 10:50 |
C++ Boost - vector<path> to vector<string> | frommars | Общие вопросы C/C++ | 0 | 04.02.2013 21:19 |
дано 3 вектора. определить максимальный чётный элемент каждого вектора и упорядочить по убыванию | 3Doleg | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 04.12.2012 01:45 |