Назад к вопросам
Junior — Middle
82
Объясните предназначение и основные особенности std::span в C++.
Компании, где спрашивали
Astra
Ответ от нейросети
sobes.tech AI
std::span в C++ — это лёгкий объект-обёртка, который предоставляет непрерывный доступ к последовательности элементов (например, массиву или вектору) без владения ими.
Основные особенности:
- Не владеет памятью, а лишь ссылается на существующий блок данных.
- Позволяет безопасно передавать массивы и срезы без копирования.
- Поддерживает размер и указатель на данные.
- Совместим с любыми контейнерами, предоставляющими непрерывную память.
Пример использования:
#include <span>
#include <vector>
#include <iostream>
void printSpan(std::span<int> s) {
for (int v : s) {
std::cout << v << ' ';
}
std::cout << '\n';
}
int main() {
std::vector<int> vec = {1, 2, 3, 4};
int arr[] = {5, 6, 7, 8};
printSpan(vec); // передаём вектор
printSpan(arr); // передаём массив
printSpan({arr, 3}); // передаём срез массива
}
std::span удобен для функций, которым нужно работать с последовательностями данных без копирования и без привязки к конкретному контейнеру.