iota_view
class (standardní knihovna jazyka C++)
Vygeneruje zobrazení posloupnosti prvků opakovaným zvýšením počáteční hodnoty. Posloupnost může být ohraničená nebo nevázaná.
Syntaxe
template<std::weakly_incrementable W, std::semiregular Bound = std::unreachable_sentinel_t>
requires __WeaklyEqualityComparableWith<W, Bound> && std::copyable<W>
class iota_view : public ranges::view_interface<iota_view<W, Bound>>;
Parametry šablony
W
Typ hodnot v sekvenci. Zadaný typ musí podporovat operator++
.
Bound
Typ koncové hodnoty. Pokud Bound
je std::unreachable_sentinel_t
(výchozí hodnota), je zobrazení nevázané.
Zobrazení charakteristik
Popis následujících položek naleznete v tématu Zobrazení vlastností třídy.
Charakteristika | Popis |
---|---|
Adaptér rozsahu | views::iota |
Podkladová oblast | Nelze použít, protože toto zobrazení generuje jeho členy. |
Typ elementu | Stejné jako parametr šablony W |
Zobrazit kategorii iterátoru | Podporuje input_range až random_access_range , v závislosti na typu W |
Tříděný | Pouze pokud má oblast koncovou hodnotu, to znamená, že se nejedná o nekonečnou řadu. |
Je const -iterable |
Ano |
Společný rozsah | Pouze pokud Bound je stejný typ jako W |
Zapůjčený rozsah | Ano |
Členové
Členské funkce | Popis |
---|---|
Konstruktory C++20 | Vytvořte zobrazení. |
begin C++20 |
Získejte iterátor k prvnímu prvku. |
end C++20 |
Získejte sentinel na konci zobrazení. |
size C++20 |
Získá počet prvků. |
Zděděno z view_interface |
Popis |
back C++20 |
Získejte poslední prvek. |
empty C++20 |
Otestujte, jestli je zobrazení prázdné. |
front C++20 |
Získejte první prvek. |
operator[] C++20 |
Získejte prvek na zadané pozici. |
operator bool C++20 |
Otestujte, jestli zobrazení není prázdné. |
Poznámky
Dobrým způsobem vytvoření je iota_view
použití adaptéru rozsahu iota
. Adaptéry rozsahu představují zamýšlený způsob vytváření tříd zobrazení. Typy zobrazení jsou vystaveny pro případ, že chcete vytvořit vlastní typ zobrazení.
Posloupnost hodnot může být celočíselné hodnoty, například 1,2,3 nebo "a", "b", "c" nebo po sobě jdoucí prvky z oblasti.
Toto zobrazení se obvykle používá k iteraci nad řadou hodnot. Příklad:
for (int i : iota_view{1, 10}) // iterate over a view of the integers 1 through 9
{
std::cout << i << ' '; // 1 2 3 4 5 6 7 8 9
}
Požadavky
Hlavička: <ranges>
(od C++20)
Obor názvů: std::ranges
Je vyžadována možnost kompilátoru: /std:c++20
nebo novější.
Konstruktory
Vytvořte instanci objektu iota_view
.
1) iota_view() requires std::default_initializable<W> = default;
2) constexpr explicit iota_view(W value);
3) constexpr iota_view(std::type_identity_t<W> value, std::type_identity_t<Bound> bound);
4) constexpr iota_view( /*iterator*/ first, /*sentinel*/ last );
Parametry
value
Počáteční hodnota pro řadu.
bound
Hranice řady. Je to jedna větší než poslední hodnota v řadě.
Informace o typu parametru šablony naleznete v tématu Parametry šablony.
Poznámky
1) Vytvořte počáteční iota_view
a koncovou hodnotu určenou výchozím inicializovaným typem W
šablony .
2) Vytvořte se zadanou iota_view
počáteční hodnotou a koncovou hodnotou určenou inicializovaným typem W
hodnoty .
3) Vytvořte hranici iota_view
se zadanou počáteční hodnotou a koncovou hodnotou. Koncová hodnota je menší než poslední zadaná hodnota.
4) Slouží k vytváření dílčích zobrazení. Například kde std::ranges::iota_view(start, end);
start
a end
jsou iterátory na začátek a konec dílčího zobrazení.
Místo přímého vytvoření této třídy je snadný způsob, jak vytvořit iota_view
, pomocí adaptéru rozsahu iota
. Adaptéry rozsahu představují zamýšlený způsob vytváření tříd zobrazení. Typy zobrazení jsou vystaveny pro případ, že chcete vytvořit vlastní typ zobrazení.
Pokud je unreachable_sentinel_t
typ vazby , výsledné zobrazení je ohraničeno.
Pokud použijete jeden z konstruktorů, které inicializuje vazbu, bude vázána výchozí inicializovaná hodnota pro daný typ. Například je prázdný rozsahint
, iota_view<int, int>{}
protože výchozí hodnota typu int a svázaná jsou obě 0
. Je to také proto, iota_view<int, int>{-4}
-4, -3, -2, -1
že výchozí konstruovaná int
vazba je 0
.
iota_view
příklad konstruktoru
// requires /std:c++20, or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::ranges::iota_view<int> iv; // create an iota_view with an unbounded range, starting at 0
std::ranges::iota_view<int> iv2(5); // create an iota_view with an unbounded range, starting at 5.
std::ranges::iota_view<int, int> iv3{5, 10}; // create an iota_view with a bounded range, starting at 5 and ending at 9
std::vector<int> v{10, 20, 35, 45, 50, 66, 77, 82, 90, 100};
auto start = std::ranges::find(v, 35);
auto end = std::ranges::find(v, 82);
for (auto &&val : std::ranges::iota_view(start, end))
{
std::cout << *val << ' '; // outputs 35 45 50 66 77
}
}
begin
Získejte iterátor k prvnímu prvku v zobrazení.
constexpr auto begin();
constexpr auto begin() const requires range<const V>;
Parametry
Žádná
Vrácená hodnota
Iterátor ukazující na první prvek v zobrazení.
end
Získejte koncový sentinel na konci zobrazení.
constexpr auto end();
constexpr auto end() const requires ranges::range<const V>;
Parametry
Žádná
Vrácená hodnota
iota_view
Pokud je nevázaný, vrátí hodnotu std::unreachable_sentinel
.
Pokud je ohraničený iota_view
, vrátí iterátor odkazující na sentinel za poslední hodnotu v sekvenci.
size
Získejte počet prvků v zobrazení. Musí iota_view
být svázán.
constexpr auto size() requires
(same_as<W, Bound> && advanceable <W>) ||
(integral<W> && integral<Bound>) ||
sized_sentinel_for<Bound, W>;
Parametry
Žádná
Vrácená hodnota
Počet prvků v souboru iota_view
.
Poznámky
Nemůžete volat size()
na nevázanou iota_view
komunikaci .
Viz také
<ranges>
iota()
adaptér rozsahu
std::numerics::iota
zobrazit třídy