Почему в классе можно использовать несколько стандартных векторов? - PullRequest
1 голос
/ 07 января 2020

Начиная с этого ответа , я склонен полагать, что члены класса гарантированно находятся в памяти в том порядке, в котором они объявлены. Однако из документов"векторы используют смежные места хранения для своих элементов". Итак, как можно иметь несколько векторов в классе или вектор, который не является последним членом класса, учитывая, что вектор может изменять размер и перетекать в уже выделенную память?

Ответы [ 2 ]

6 голосов
/ 07 января 2020

std::vector обычно реализуется в виде трех указателей. Один указатель на динамически распределенный массив, в котором хранится содержимое vector, один указатель на конец используемой памяти и один указатель на конец выделенного массива. Независимо от того, как распределен vector, данные vector хранятся в другом месте в динамическом c хранилище.

1 голос
/ 07 января 2020

Память, используемая каждым вектором, распределяется динамически.

...