Вот мой случай использования: < /p>
Код: Выделить всё
#include
const uint64_t maxSize = /* some large size */;
// SimpleCStruct is a fixed size C-struct containing as members basic C types and other
// fixed size C-structs
std::vector v;
v.reserve(maxSize);
SimpleCStruct * const dataPtr = v.data(); // has to be saved before the loop below begins
for( /* very large number of iterations*/ )
{
const uint64_t numberOfElementsWritten = C_function_writes_data_to(dataPtr);
v.resize(numberOfElementsWritten);
// numberOfElementsWritten < maxSize (always)
// 'v' is serialized to disk here
}
Код: Выделить всё
v.data()
В документации говорится:
векторная емкость никогда не уменьшается при изменении размера до меньшего размера. увеличится, а некоторые уменьшат размер вектора (всегда оставаясь в пределах емкости).
Подробнее здесь: https://stackoverflow.com/questions/793 ... y-realloca