Нет, не существует поддерживаемого способа «развернуть» вектор, чтобы он содержал дополнительные значения, которые были непосредственно скопированы. Использование «емкости» для выделения памяти без размера, в которую вы можете записать, определенно не то, что вам следует положитесь.
Вы должны убедиться, что у вашего вектора достаточно места, изменив размер перед вызовом функции, а затем изменив правильное значение. Э.Г.
vector.resize(MAX_SIZE);
size_t items = write_array(&(vec[0]), MAX_SIZE)
vector.resize(items);