Самый быстрый способ скопировать содержимое вектора в массив?
Возможный дубликат:
Как преобразовать вектор в массив С++
При работе с массивами вы можете использовать
memcpy( void *destination, const void *source, size_t num );
Однако векторы просто предоставляют итераторы для метода копирования, делая memcpy бесполезным. Какой самый быстрый способ для копирования содержимого вектор в другое место?
Ответы
Ответ 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 тривиально можно копировать.