Как стать автором
Обновить

Комментарии 9

Хорошая статья, но если бы я не заглянул в общий поток, то пропустил бы её. Поставьте пожалуйста тег С++.

хорошо, что еще есть статьи, не переведенные бомжами и не написанные бредосетью

Нужно подчеркнуть, что std::span не владеет данными, а лишь предоставляет «вид» на них, что делает его безопасным и эффективным инструментом.

Безопасным невладеющий контейнер может быть лишь в определённых условиях. Передавать им данные в функцию - прекрасно, а в свободном виде использовать с осторожностью, следить чтобы его время жизни не превышало время жизни исходного массива.

Например вот так не надо делать:

std::span<int> foobar(int i, int j, int k)
{
    std::vector<int> a{i, j, k};
    return std::span(a);
}

А во второй части примера создали span на основе вектора и дальше, увеличивая вектор, получили автоматически проход по всему вектору, а не только по той части, которая была на момент создания.

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

Статья сгенерена LLM?

Эммм, ну там как бы implicit конструктор std::span вызывается при вызове print_array (обратите внимание на сигнатуру функции). Вы не видите, а он есть))

Хотя конечно, стоило написать, что std::spand неявно может конструироватся от std::vector

Так там два разных спана, не понимаю, о каком автоматическом проходе по увеличенному вектору вы говорите. Что должен иллюстрировать этот пример?

Я не автор)

Но подозреваю, автор хотел сказать, что вызвав print_array ещё раз после push_back функция пройдётся по всему вектору нового размера. Хотя это конечно очевидно, ведь просто два разных span подаётся в эту функцию

каждый второй недовольный нынче обзывает все нейросетью с порога к месту и без места

Когда работаешь со старым легаси кодом, который написан в стиле Си с классами, либо когда пишешь обёртки над сишными библиотеками - чувствуется, что std::span может хорошо пригодиться.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий