Std::span для контейнеров смежных данныхC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Std::span для контейнеров смежных данных

Сообщение Anonymous »

Код: Выделить всё

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

Код: Выделить всё

void func(std::span vec){

}
и вектор массива:

Код: Выделить всё

std::vector vec;
Я бы хотел называть это так:

Код: Выделить всё

func(vec);
Я хотел бы избежать использования std::span, поскольку это всего лишь один блок памяти, и я хотел бы примите std::vector, std::array и std::vector. Можно сделать что-то подобное с необработанным указателем, но тогда тип теряется и разрушается, поэтому я пытаюсь этого избежать.
Я мог бы сделать func(std::span (&vec[0][0], vec.size()*3)), но мне интересно, есть ли что-нибудь получше.

Подробнее здесь: https://stackoverflow.com/questions/791 ... guous-data
Ответить

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

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

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

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

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