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 const iterowalne |
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. |
base C++20 |
Pobierz zakres bazowy. |
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. Zakres bazowy musi spełniać sized_range wartość . |
Dziedziczone z view_interface |
Opis |
back C++20 |
Pobierz ostatni element. |
data C++20 |
Pobierz wskaźnik do pierwszego elementu. |
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. |
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.
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.
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 count
elementem :
- 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 toranges::size(base)
.