Класс subrange
Класс subrange из пространства имен std::ranges представляет собой легковесное представление диапазона элементов. Он хранит пару значений: итератор начала и итератор конца (или ограничитель). В первом параметре шаблона задается тип итератора, во втором - тип ограничителя. Класс subrange удобен для передачи диапазонов в алгоритмы и представления, а также для возврата диапазонов из функций.
Синтаксис
template<class I, class S>
class subrange;
Пример
Давайте создадим subrange из вектора и выведем его элементы:
#include <iostream>
#include <vector>
#include <ranges>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
ranges::subrange sub(vec.begin(), vec.end());
for (int elem : sub)
{
cout << elem << ' ';
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте создадим subrange только для части вектора, начиная со второго элемента:
#include <iostream>
#include <vector>
#include <ranges>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
ranges::subrange sub(vec.begin() + 1, vec.end());
for (int elem : sub)
{
cout << elem << ' ';
}
cout << endl;
return 0;
}
Результат выполнения кода:
2 3 4 5
Смотрите также
-
функция
ranges::begin,
которая возвращает итератор на начало диапазона -
функция
ranges::end,
которая возвращает итератор на конец диапазона -
класс
views::all,
который создает представление всех элементов диапазона -
класс
views::take,
который создает представление первых N элементов диапазона