Std :: span фиксированного размера vs std :: array - PullRequest
0 голосов
/ 05 июня 2018

C ++ 20 включает в себя std::span, который «описывает объект, который может ссылаться на непрерывную последовательность объектов с первым элементом последовательности в нулевой позиции» .Его интерфейс очень близок к std::array, хотя он поддерживает динамический и фиксированный экстенты.

Очевидное различие заключается в том, что std::array владеет своими элементами (и поэтому деструктор уничтожает их), а std::span нет.

Есть ли что-нибудь еще, array может использоваться длячто span не может?

1 Ответ

0 голосов
/ 05 июня 2018

span равно array, как указатели на значения.

Можно ли использовать int для чего-то, чего не может int*?

Если вы заметилисвою базу кода и заменяя каждые int на int*, вы получите совершенно бессмысленную кодовую базу, даже если вы добавите * в каждой точке использования int*.Если вы проведете свою базу кода и замените каждый std::array на std::span, то же самое будет верно.

Указатели и значения - это разные вещи.Вы можете перепрыгивать через обручи и пытаться обращаться с указателями, как будто они являются ценностью того, на что они указывают, но попытка сделать это часто трудна, а результат часто непоследователен.

...