отлично подходит для std::vectors, std::arrays или указателей c. Однако часто с непрерывной памятью связан другой тип, например вектор массивов. Я пытаюсь использовать std::span для векторов массивов, массивов массивов или, в более общем плане, контейнеров смежных данных.
Например, если у меня есть функция:
и вектор массива:
Я бы хотел называть это так:
Я хотел бы избежать использования std::span, поскольку это всего лишь один блок памяти, и я хотел бы примите std::vector, std::array и std::vector. Можно сделать что-то подобное с необработанным указателем, но тогда тип теряется и разрушается, поэтому я пытаюсь этого избежать.
Я мог бы сделать func(std::span (&vec[0][0], vec.size()*3)), но мне интересно, есть ли что-нибудь получше.
Подробнее здесь:
https://stackoverflow.com/questions/791 ... guous-data