std::ranges:: views:: iota, std::ranges:: iota_view
|
Определено в заголовочном файле
<ranges>
|
||
|
template
<
std::
weakly_incrementable
W,
std::
semiregular
Bound
=
std::
unreachable_sentinel_t
>
|
(1) | (начиная с C++20) |
|
namespace
views
{
inline
constexpr
/* unspecified */
iota
=
/* unspecified */
;
|
(2) | (начиная с C++20) |
|
Сигнатура вызова
|
||
|
template
<
class
W
>
requires
/* see below */
|
(начиная с C++20) | |
|
template
<
class
W,
class
Bound
>
requires
/* see below */
|
(начиная с C++20) | |
Содержание |
Объекты точек кастомизации
Имя
views::iota
обозначает
объект точки кастомизации
, который является константным
функциональным объектом
типа
литерального
semiregular
класса. Для подробностей см.
CustomizationPointObject
.
Члены данных
| Участник | Определение |
W
value_
|
начальное значение
( объект-член только для демонстрации* ) |
Bound
bound_
|
граничное значение, может быть недостижимым
( объект-член только для демонстрации* ) |
Функции-члены
создает
iota_view
(публичная функция-член) |
|
получает начальный итератор
iota_view
(публичная функция-член) |
|
получает страж, обозначающий конец
iota_view
(публичная функция-член) |
|
проверяет, является ли
iota_view
пустым (т.е. итератор и страж равны)
(публичная функция-член) |
|
|
(optional)
|
получает размер
iota_view
(предоставляется только если он ограничен)
(публичная функция-член) |
Наследуется от std::ranges::view_interface |
|
|
(C++23)
|
возвращает константный итератор на начало диапазона
(публичная функция-член
std::ranges::view_interface<D>
)
|
|
(C++23)
|
возвращает страж для константного итератора диапазона
(публичная функция-член
std::ranges::view_interface<D>
)
|
|
возвращает, является ли производное представление непустым, предоставляется только если
ranges::empty
применимо к нему
(публичная функция-член
std::ranges::view_interface<D>
)
|
|
возвращает первый элемент в производном представлении, предоставляется если оно удовлетворяет
forward_range
(публичная функция-член
std::ranges::view_interface<D>
)
|
|
возвращает последний элемент в производном представлении, предоставляется только если оно удовлетворяет
bidirectional_range
и
common_range
(публичная функция-член
std::ranges::view_interface<D>
)
|
|
возвращает
n
-й
элемент в производном представлении, предоставляется только если оно удовлетворяет
random_access_range
(публичная функция-член
std::ranges::view_interface<D>
)
|
|
Руководства по выводу
Вложенные классы
|
тип итератора
( класс-член только для демонстрации* ) |
|
тип сторожа, используемый когда
iota_view
является ограниченным и
Bound
и
W
не являются одним и тем же типом
( класс-член только для демонстрации* ) |
Вспомогательные шаблоны
|
template
<
std::
weakly_incrementable
W,
std::
semiregular
Bound
>
constexpr bool ranges:: enable_borrowed_range < ranges :: iota_view < W, Bound >> = true ; |
(начиная с C++20) | |
Эта специализация
ranges::
enable_borrowed_range
позволяет
iota_view
удовлетворять требованиям
borrowed_range
.
Пример
#include <algorithm> #include <iostream> #include <ranges> struct Bound { int bound; bool operator==(int x) const { return x == bound; } }; int main() { for (int i : std::ranges::iota_view{1, 10}) std::cout << i << ' '; std::cout << '\n'; for (int i : std::views::iota(1, 10)) std::cout << i << ' '; std::cout << '\n'; for (int i : std::views::iota(1, Bound{10})) std::cout << i << ' '; std::cout << '\n'; for (int i : std::views::iota(1) | std::views::take(9)) std::cout << i << ' '; std::cout << '\n'; std::ranges::for_each(std::views::iota(1, 10), [](int i){ std::cout << i << ' '; }); std::cout << '\n'; }
Вывод:
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
Отчеты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 4096 | C++20 |
views::iota
could copy an
iota_view
as-is
|
forbidden |
| P2325R3 | C++20 |
iota_view
required that
W
is
semiregular
as
view
required
default_initializable
|
only requires that
W
is
copyable
|
Смотрите также
|
(C++11)
|
заполняет диапазон последовательными приращениями начального значения
(шаблон функции) |
|
(C++23)
|
заполняет диапазон последовательными приращениями начального значения
(функциональный объект алгоритма) |
view
состоящий из сгенерированной последовательности путем повторного создания одного и того же значения
(шаблон класса) (объект точки настройки) |
|
view
который отображает каждый элемент адаптированной последовательности в кортеж, содержащий как позицию элемента, так и его значение
(шаблон класса) (объект адаптера диапазона) |