Метод subspan
Метод subspan класса span создает новый объект span, который ссылается на подмножество элементов исходного диапазона. Сами данные при этом не копируются, а новый span указывает на ту же память. В первый параметр мы передаем позицию, откуда следует начинать поддиапазон, а во второй - количество элементов. Оба параметра являются необязательными.
Синтаксис
span.subspan(offset, [count])
Пример
Давайте создадим span из массива и получим его поддиапазон, начиная с позиции 1 и длиной 3 элемента:
#include <iostream>
#include <span>
using namespace std;
int main()
{
int arr[] = {1, 2, 3, 4, 5};
span<int> sp(arr);
span<int> sub = sp.subspan(1, 3);
for (int elem : sub)
{
cout << elem << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
2 3 4
Пример
Давайте получим поддиапазон от позиции 2 до конца исходного span, не указывая количество элементов:
#include <iostream>
#include <span>
using namespace std;
int main()
{
int arr[] = {1, 2, 3, 4, 5};
span<int> sp(arr);
span<int> sub = sp.subspan(2);
for (int elem : sub)
{
cout << elem << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
3 4 5
Пример
Давайте создадим span из строкового литерала и получим его часть:
#include <iostream>
#include <span>
#include <string_view>
using namespace std;
int main()
{
string_view str = "abcde";
span<const char> sp(str.data(), str.size());
span<const char> sub = sp.subspan(1, 3);
for (char elem : sub)
{
cout << elem;
}
cout << endl;
return 0;
}
Результат выполнения кода:
"bcd"