Может ли std :: ecector :: reszize () изменить емкость вектора или вызвать перераспределение памяти, если изменение размC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Может ли std :: ecector :: reszize () изменить емкость вектора или вызвать перераспределение памяти, если изменение разм

Сообщение Anonymous »

can std :: ecector :: reszize () изменить емкость вектора () или вызвать перераспределение памяти, если изменение размера всегда находится в пределах начальной емкости?
Вот мой случай использования: < /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()
обеспечивает прямой доступ к основному смежному хранилищу, и поэтому вызов функции уровня C, как ожидается, будет работать правильно.
В документации говорится:

векторная емкость никогда не уменьшается при изменении размера до меньшего размера. увеличится, а некоторые уменьшат размер вектора (всегда оставаясь в пределах емкости).

Подробнее здесь: https://stackoverflow.com/questions/793 ... y-realloca
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • C ++: может ли std :: evect radize () изменить емкость вектора или вызвать перераспределение памяти, если изменение разм
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Эквивалентность между std :: ecector > и std :: ecector
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Эквивалентность между std :: ecector > и std :: ecector
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Эквивалентность между std :: ecector > и std :: ecector
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Эквивалентность между std :: ecector > и std :: ecector
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»