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í. |
base C++20 |
Získejte podkladovou oblast. |
begin C++20 |
Získejte iterátor k prvnímu prvku. |
end C++20 |
Získejte sentinel na konci zobrazení. |
size C++20 |
Získá počet prvků. Základní rozsah musí splňovat sized_range . |
Zděděno z view_interface |
Popis |
back C++20 |
Získejte poslední prvek. |
data C++20 |
Získejte ukazatel na první prvek. |
empty C++20 |
Otestujte, jestli je zobrazení prázdné. |
front C++20 |
Získejte první prvek. |
operator[] C++20 |
Získejte prvek na zadané pozici. |
operator bool C++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í.
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í.
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, jeranges::size(base)
velikost zobrazení .