Udostępnij za pośrednictwem


take_view class (Standardowa biblioteka C++)

Widok pierwszych N elementów z innego widoku.

Składnia

template<view V>
class take_view : public view_interface<take_view<V>>;

Parametry szablonu

V
Typ bazowego zakresu.

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::take
Zakres bazowy Dowolny zakres
Typ elementu Taki sam jak zakres bazowy
Wyświetl kategorię iteratora Taki sam jak zakres bazowy
Wielkości Nie.
Jest constiterowalne Tylko wtedy, gdy zakres bazowy jest const iterowalny
Wspólny zakres Tylko wtedy, gdy zakres bazowy spełnia random_access_range i sized_range
Pożyczony zakres Tylko wtedy, gdy zakres bazowy jest borrowed_range

Elementy członkowskie

Funkcje składowe Opis
Konstruktory Skonstruuj widok.
baseC++20 Pobierz zakres bazowy.
beginC++20 Pobierz iterator do pierwszego elementu.
endC++20 Pobierz element sentinel na końcu widoku.
sizeC++20 Pobierz liczbę elementów. Zakres bazowy musi spełniać sized_rangewartość .
Dziedziczone z view_interface Opis
backC++20 Pobierz ostatni element.
dataC++20 Pobierz wskaźnik do pierwszego elementu.
emptyC++20 Sprawdź, czy widok jest pusty.
frontC++20 Pobierz pierwszy element.
operator[]C++20 Pobierz element na określonej pozycji.
operator boolC++20 Sprawdź, czy widok nie jest pusty.

Wymagania

Nagłówek: <ranges> (od C++20)

Przestrzeń nazw: std::ranges

Opcja kompilatora: /std:c++20 lub nowsza jest wymagana.

Konstruktory

Konstruowanie wystąpienia obiektu take_view

1) take_view() requires default_initializable<V> = default;
2) constexpr take_view(V base, range_difference_t<V> count);

Parametry

base
Widok bazowy.

count
Liczba elementów do przejmowania z przodu widoku bazowego. Jeśli count wartość jest większa niż liczba elementów w widoku bazowym, widok będzie zawierać wszystkie elementy w bazowym zakresie.

Aby uzyskać informacje o typie parametru szablonu, zobacz Parametry szablonu.

Wartość zwracana

Element take_view, który jest widokiem pierwszych N elementów z innego widoku. Jeśli określisz więcej elementów do upuszczania niż istnieje w bazowym zakresie, zostanie zwrócona wartość .empty_view

Uwagi

Najlepszym sposobem utworzenia elementu take_view jest użycie adaptera views::take zakresu. Adaptery zakresów są zamierzonym sposobem tworzenia klas widoków. Typy widoków są widoczne tylko w przypadku, gdy chcesz utworzyć własny typ widoku niestandardowego.

1) Utwórz element take_view bez elementów. Widok podstawowy jest domyślnie skonstruowany. base() Zwraca kopię elementu V().
2) Utwórz element take_view na podstawie i base liczby. base jest przenoszony za pośrednictwem polecenia std::move().

Jeśli count wartość jest mniejsza niż liczba elementów w bazowym zakresie, określa count rozmiar elementu take_view.
Jeśli count jest większa niż liczba elementów w bazowym zakresie, take_view element zawiera wszystkie elementy w bazowym zakresie.

Przykład: take_view

// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>

int main()
{
    std::vector<int> v{0, 1, 2, 3, 4, 5, 6};
   
    auto newView = std::views::take(v, 3);
    
    for (auto& e : newView)
    {
        std::cout << e << ' '; // 0 1 2
    }
    std::cout << '\n';

    // Use the '|' operator to create a take_view
    for (auto i : v | std::views::take(3))
    {
        std::cout << i << ' '; // 0 1 2
    }
}
0 1 2
0 1 2

base

Pobiera kopię widoku bazowego.

// Uses a copy constructor to return the underlying view
1) constexpr V base() const & requires std::copy_constructible<V>;

// Uses a move constructor to return the underlying view
2) constexpr V base() &&;

Parametry

Brak.

Wartość zwracana

Widok bazowy.

begin

Pobierz iterator do pierwszego elementu w widoku.

constexpr auto begin() requires (!Simple_view<V>);
constexpr auto begin() const requires range<const V>;

Parametry

Brak.

Wartość zwracana

Iterator wskazujący pierwszy element w widoku.

Obraz wektora z elementami 10, 20 i 30. Pierwszy element zawiera wartość 10 i ma etykietę begin(). Ostatni element zawiera wartość 30 i ma etykietę

Uwagi

W przypadku 1 wymóg oznacza, Simple_view<V> że widok V i const V musi mieć te same typy iteracyjne i sentinel.

end

Pobierz element sentinel na końcu widoku.

1) constexpr auto end() requires !(Simple_view<V>);
2) constexpr auto end() const requires range<const V>;

Parametry

Brak.

Wartość zwracana

Sentinel, który jest zgodny z ostatnim elementem w widoku.

Obraz wektora z elementami 10, 20 i 30. Pierwszy element zawiera wartość 10 i ma etykietę begin(). Ostatni element zawiera wartość 30 i ma etykietę

Uwagi

W przypadku 1 wymóg oznacza, Simple_view<V> że widok V i const V musi mieć te same typy iteracyjne i sentinel.

size

Pobierz liczbę elementów.

constexpr auto size() requires sized_range<V>;
constexpr auto size() const requires sized_range<const V>;

Parametry

Brak.

Wartość zwracana

Liczba elementów w elem.take_view
take_view Jeśli obiekt został skonstruowany z jawnym countelementem :

  • jeśli count jest mniejsza niż liczba elementów w bazowym zakresie, jest zwracana jako rozmiar widoku.
  • jeśli count jest większa niż liczba elementów w bazowym zakresie, rozmiar widoku to ranges::size(base).

Zobacz też

<ranges>
take adapter zakresu
klasy widoków