Sdílet prostřednictvím


take_view class (standardní knihovna jazyka C++)

Zobrazení prvních N prvků z jiného zobrazení.

Syntaxe

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

Parametry šablony

V
Typ podkladové oblasti.

Zobrazení charakteristik

Popis následujících položek naleznete v tématu Zobrazení vlastností třídy.

Charakteristika Popis
Adaptér rozsahu views::take
Podkladová oblast Libovolný rozsah
Typ elementu Stejné jako podkladová oblast
Zobrazit kategorii iterátoru Stejné jako podkladová oblast
Tříděný No
Je const-iterable Pouze v případě, že je const základní rozsah iterovatelný
Společný rozsah Pouze v případě, že základní rozsah splňuje random_access_range a sized_range
Zapůjčený rozsah Pouze v případě, že je podkladová oblast borrowed_range

Členové

Členské funkce Popis
Konstruktory Vytvořte zobrazení.
baseC++20 Získejte podkladovou oblast.
beginC++20 Získejte iterátor k prvnímu prvku.
endC++20 Získejte sentinel na konci zobrazení.
sizeC++20 Získá počet prvků. Základní rozsah musí splňovat sized_range.
Zděděno z view_interface Popis
backC++20 Získejte poslední prvek.
dataC++20 Získejte ukazatel na první prvek.
emptyC++20 Otestujte, jestli je zobrazení prázdné.
frontC++20 Získejte první prvek.
operator[]C++20 Získejte prvek na zadané pozici.
operator boolC++20 Otestujte, jestli zobrazení není prázdné.

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ření instance objektu take_view

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

Parametry

base
Podkladové zobrazení.

count
Počet prvků, které se mají vzít z přední části podkladového zobrazení. Pokud count je více než počet prvků v podkladovém zobrazení, bude zobrazení obsahovat všechny prvky v podkladové oblasti.

Informace o typu parametru šablony naleznete v tématu Parametry šablony.

Vrácená hodnota

A take_view, což je zobrazení prvních N prvků z jiného zobrazení. Pokud zadáte více prvků, které mají být v podkladové oblasti empty_view , vrátí se.

Poznámky

Nejlepší způsob, jak vytvořit, take_view je použití adaptéru rozsahu views::take . Adaptéry rozsahu představují zamýšlený způsob vytváření tříd zobrazení. Typy zobrazení se zobrazí jenom v případě, že chcete vytvořit vlastní typ zobrazení.

1) Vytvořte prvek take_view , který neobsahuje žádné prvky. Výchozí zobrazení je vytvořené. base()vrátí kopii .V()
2) Vytvořte z take_view a počet.base base se přesune přes std::move().

Pokud count je menší než počet prvků v podkladové oblasti, pak count určuje velikost take_view.
Pokud count je větší než počet prvků v podkladové oblasti, take_view zahrnuje všechny prvky v podkladové oblasti.

Příklad: 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

Získá kopii podkladového zobrazení.

// 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

Žádná

Vrácená hodnota

Podkladové zobrazení.

begin

Získejte iterátor k prvnímu prvku v zobrazení.

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

Parametry

Žádná

Vrácená hodnota

Iterátor ukazující na první prvek v zobrazení.

Obrázek vektoru s prvky 10, 20 a 30 První prvek obsahuje hodnotu 10 a je označen jako begin(). Poslední prvek obsahuje hodnotu 30 a je označený jako

Poznámky

Pro 1 požadavek znamená, Simple_view<V> že zobrazení V a const V musí mít stejné typy iterátoru a sentinelu.

end

Získejte sentinel na konci zobrazení.

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

Parametry

Žádná

Vrácená hodnota

Sentinel, který následuje za posledním prvkem v zobrazení.

Obrázek vektoru s prvky 10, 20 a 30 První prvek obsahuje hodnotu 10 a je označen jako begin(). Poslední prvek obsahuje hodnotu 30 a je označený jako

Poznámky

Pro 1 požadavek znamená, Simple_view<V> že zobrazení V a const V musí mít stejné typy iterátoru a sentinelu.

size

Získá počet prvků.

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

Parametry

Žádná

Vrácená hodnota

Počet prvků v souboru take_view.
take_view Pokud byl vytvořen explicitněcount:

  • pokud count je menší než počet prvků v podkladové oblasti, vrátí se jako velikost zobrazení.
  • je-li count větší než počet prvků v podkladovém rozsahu, je ranges::size(base)velikost zobrazení .

Viz také

<ranges>
take adaptér rozsahu
zobrazit třídy