Самый быстрый способ скопировать содержимое вектора в массив? - программирование
Подтвердить что ты не робот

Самый быстрый способ скопировать содержимое вектора в массив?

Возможный дубликат:
Как преобразовать вектор в массив С++

При работе с массивами вы можете использовать

memcpy( void *destination, const void *source, size_t num );

Однако векторы просто предоставляют итераторы для метода копирования, делая memcpy бесполезным. Какой самый быстрый способ для копирования содержимого вектор в другое место?

4b9b3361

Ответ 1

std::copy, опуститесь вниз. Он сильно оптимизирован для использования наилучшего доступного метода внутри. Таким образом, он полностью совпадает с memcpy. Нет никакой причины использовать memcpy, даже при копировании между массивами C-стиля или буферами памяти.

Ответ 2

Вам придется измерять это для себя, в своей среде, своей программой. В любом другом ответе будет слишком много оговорок.

Пока вы это делаете, вот один метод, который вы можете сравнить с:

std::copy(source.begin(), source.end(), destination);

Ответ 3

Попробуйте следующее: -

  std::vector<int> newvector(oldvector);

Для копирования в массиве попробуйте следующее: -

  std::copy(source.begin(), source.end(), destination);

Ответ 4

Вы можете использовать memcpy с вектором - векторы гарантированно смежны в памяти, поэтому при условии, что вектор не пуст, вы можете использовать &vData[0] (где vData - ваш вектор) в качестве исходного указателя на memcpy

EDIT Как уже упоминалось в комментариях к другим ответам, это работает только в том случае, если вектор value_type тривиально можно копировать.