Вектор списков действительно вектор? - PullRequest
0 голосов
/ 12 апреля 2019

Не проблема кода, но я закончил программу, которая сохраняет вектор списков, но я вдруг подумал ... Если элементы вектора являются смежными в памяти, но список нуждается в указателях, потому что это не смежная память.Вектор списков на самом деле смежный, если его элементы не?(На языке C ++).

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Да, это просто означает, что векторные элементы относятся к списку типов, а данные для этих элементов непрерывны в памяти. Однако «внутри» элементов списка могут быть указатели на другие области памяти. По сути, не все, на что ссылается в векторных элементах, является непрерывным в памяти, но сами ссылки таковы.

0 голосов
/ 12 апреля 2019

Вектор списков на самом деле является смежным, если его элементы не являются?

Да и нет.

С точки зрения вектора, он все еще смежен. Непосредственные данные каждого элемента, каждого std::list, являются непрерывными.

Но это только его внутренние указатели и тому подобное. В свою очередь каждый фактический элемент каждого std::list скрыт за другим слоем косвенности.

Таким образом, окончательные данные не сохраняются непрерывно.

Является ли вектор списков действительно вектором?

Ну, это зависит от того, что вы подразумеваете под "вектором", и насколько строго вы хотите быть с этим определением.

Добро пожаловать в абстракции!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...