Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Generuje widok sekwencji elementów przez wielokrotne zwiększanie wartości początkowej. Sekwencja może być powiązana lub niezwiązana.
Składnia
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 szablonu
W
Typ wartości w sekwencji. Określony typ musi obsługiwać element operator++
.
Bound
Typ wartości końcowej. Jeśli Bound
to std::unreachable_sentinel_t
(wartość domyślna), widok jest niezwiązany.
Właściwości widoku
Opis poniższych wpisów można znaleźć w temacie View class characteristics (Wyświetlanie właściwości klas)
Characteristic | opis |
---|---|
Adapter zakresu | views::iota |
Zakres bazowy | Nie dotyczy, ponieważ ten widok generuje jego członków |
Typ elementu | Tak samo jak parametr szablonu W |
Wyświetl kategorię iteratora | Obsługuje input_range do random_access_range , w zależności od typu W |
Wielkości | Tylko wtedy, gdy zakres ma wartość końcową, czyli nie jest to nieskończona seria |
Jest const iterowalne |
Tak |
Wspólny zakres | Tylko wtedy, gdy Bound jest to ten sam typ co W |
Pożyczony zakres | Tak |
Elementy członkowskie
Funkcje składowe | Opis |
---|---|
Konstruktory C++20 | Skonstruuj widok. |
begin C++20 |
Pobierz iterator do pierwszego elementu. |
end C++20 |
Pobierz element sentinel na końcu widoku. |
size C++20 |
Pobierz liczbę elementów. |
Dziedziczone z view_interface |
Opis |
back C++20 |
Pobierz ostatni element. |
empty C++20 |
Sprawdź, czy widok jest pusty. |
front C++20 |
Pobierz pierwszy element. |
operator[] C++20 |
Pobierz element na określonej pozycji. |
operator bool C++20 |
Sprawdź, czy widok nie jest pusty. |
Uwagi
Dobrym sposobem na utworzenie elementu iota_view
jest użycie adaptera iota
zakresu. Adaptery zakresów są zamierzonym sposobem tworzenia klas widoków. Typy widoków są widoczne w przypadku utworzenia własnego niestandardowego typu widoku.
Sekwencja wartości może być wartościami całkowitymi, takimi jak 1,2,3 lub "a", "b", "c" lub kolejne elementy z zakresu.
Ten widok jest zwykle używany do iterowania serii wartości. Na przykład:
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
}
Wymagania
Nagłówek: <ranges>
(od C++20)
Przestrzeń nazw: std::ranges
Opcja kompilatora: /std:c++20
lub nowsza jest wymagana.
Konstruktory
Utwórz wystąpienie klasy 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
Wartość początkowa serii.
bound
Granica serii. Jest to jedna większa niż ostatnia wartość z serii.
Aby uzyskać informacje o typie parametru szablonu, zobacz Parametry szablonu.
Uwagi
1) Utwórz obiekt iota_view
z wartością początkową i końcową określoną przez domyślny typ W
szablonu zainicjowanego.
2) Utwórz element iota_view
z określoną wartością początkową i wartością końcową określoną przez typ W
zainicjowany przez wartość .
3) Utwórz granicę iota_view
z określoną wartością początkową i wartością końcową. Wartość końcowa jest mniejsza niż określona ostatnia wartość.
4) Służy do tworzenia widoków podrzędnych. Na przykład std::ranges::iota_view(start, end);
gdzie start
i end
są iteratorami do początku i końca widoku podrzędnego.
Zamiast bezpośrednio tworzyć tę klasę, można łatwo utworzyć obiekt iota_view
przy użyciu adaptera iota
zakresu. Adaptery zakresów są zamierzonym sposobem tworzenia klas widoków. Typy widoków są widoczne w przypadku utworzenia własnego niestandardowego typu widoku.
Jeśli typ ograniczenia to unreachable_sentinel_t
, wynikowy widok jest ograniczony.
Jeśli używasz jednego z konstruktorów, które wartość inicjuje granicę, granica będzie wartością domyślną zainicjowaną dla tego typu. Na przykład jest pustym zakresem wartości, iota_view<int, int>{}
ponieważ wartość domyślna skonstruowana int i powiązana są zarówno 0
.int
Ponadto jest -4, -3, -2, -1
to spowodowane tym, iota_view<int, int>{-4}
że domyślna, skonstruowana granica int
to 0
.
iota_view
przykład konstruktora
// 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
Pobierz iterator do pierwszego elementu w widoku.
constexpr auto begin();
constexpr auto begin() const requires range<const V>;
Parametry
Brak.
Wartość zwracana
Iterator wskazujący pierwszy element w widoku.
end
Pobierz końcowy element sentinel na końcu widoku.
constexpr auto end();
constexpr auto end() const requires ranges::range<const V>;
Parametry
Brak.
Wartość zwracana
Jeśli obiekt iota_view
jest niezwiązany, zwraca wartość std::unreachable_sentinel
.
iota_view
Jeśli element jest ograniczony, zwraca iterator wskazujący na sentinel obok ostatniej wartości w sekwencji.
size
Pobierz liczbę elementów w widoku. Element iota_view
musi być ograniczony.
constexpr auto size() requires
(same_as<W, Bound> && advanceable <W>) ||
(integral<W> && integral<Bound>) ||
sized_sentinel_for<Bound, W>;
Parametry
Brak.
Wartość zwracana
Liczba elementów w elem.iota_view
Uwagi
Nie można wywołać size()
wywołania dla niezwiązanego iota_view
elementu .
Zobacz też
<ranges>
iota()
adapter zakresu
std::numerics::iota
klasy widoków