Функция ranges::begin
Функция ranges::begin возвращает итератор,
указывающий на первый элемент диапазона.
В первый параметр мы передаем диапазон, для которого
нужно получить начальный итератор. Функция поддерживает
обычные контейнеры, C-массивы, а также представления
из библиотеки ranges.
В отличие от std::begin, функция ranges::begin
учитывает требования концепта range и корректно
работает с временными диапазонами, у которых есть
перегрузка для rvalue. Она также запрещает вызов для
rvalue-контейнеров, чтобы избежать висячих итераторов.
Синтаксис
ranges::begin(range)
Пример
Давайте получим итератор на начало вектора и выведем первый элемент:
#include <iostream>
#include <vector>
#include <ranges>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
auto it = ranges::begin(vec);
cout << *it << endl;
return 0;
}
Результат выполнения кода:
1
Пример
Давайте получим итератор на начало C-массива и выведем его первый элемент:
#include <iostream>
#include <ranges>
using namespace std;
int main()
{
int arr[] = {1, 2, 3, 4, 5};
auto it = ranges::begin(arr);
cout << *it << endl;
return 0;
}
Результат выполнения кода:
1
Пример
Давайте переберем все элементы вектора
с помощью итераторов, полученных через
ranges::begin и ranges::end:
#include <iostream>
#include <vector>
#include <ranges>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
for (auto it = ranges::begin(vec); it != ranges::end(vec); ++it)
{
cout << *it << " ";
}
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Смотрите также
-
функция
ranges::end,
которая возвращает итератор на конец диапазона -
функция
begin,
которая возвращает итератор на начало контейнера -
функция
cbegin,
которая возвращает константный итератор на начало -
функция
ranges::end,
которая возвращает страж диапазона