Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
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 countelementem :
- jeśli
countjest mniejsza niż liczba elementów w bazowym zakresie, jest zwracana jako rozmiar widoku. - jeśli
countjest większa niż liczba elementów w bazowym zakresie, rozmiar widoku toranges::size(base).