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 zawierający wiodące elementy zakresu, które pasują do predykatu.
Składnia
template<view V, class Pred> requires
input_range<V> && is_object_v<Pred> &&
indirect_unary_predicate<const Pred, iterator_t<V>>
class take_while_view : public view_interface<take_while_view<V, Pred>>;
Parametry szablonu
Pred
Typ predykatu, który określa elementy wiodące do umieszczenia w widoku.
V
Typ widoku bazowego.
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_while |
| Zakres bazowy | Musi spełniać input_range lub wyższe |
| 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, a predykat może pracować z odwołaniami const . |
| Wspólny zakres | Nie. |
| Pożyczony zakres | Nie. |
Elementy członkowskie
| Funkcje składowe | Opis |
|---|---|
| KonstruktoryC++20 | Skonstruuj widok. |
baseC++20 |
Pobierz zakres bazowy. |
beginC++20 |
Pobierz iterator do pierwszego elementu. |
endC++20 |
Pobierz element sentinel na końcu widoku. |
predC++20 |
Uzyskaj odwołanie do predykatu określającego, które elementy należy wziąć. |
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. |
size |
Pobierz liczbę elementów w widoku. |
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_while_view
1) take_while_view() requires
default_initializable<V> &&
default_initializable<Pred> = default;
2) constexpr take_while_view(V base, Pred pred);
Parametry
base
Widok bazowy.
pred
Predykat określający elementy wiodące do umieszczenia w widoku.
Aby uzyskać informacje o typach parametrów szablonu, zobacz Parametry szablonu.
Wartość zwracana
Obiekt take_while_view.
Uwagi
Najlepszym sposobem utworzenia elementu take_while_view jest użycie adaptera views::take_while zakresu. Adaptery zakresów są zamierzonym sposobem tworzenia klas widoków. Typy widoków są widoczne w przypadku utworzenia własnego niestandardowego typu widoku.
1) Przeniesienie konstruuje take_while_view element z base widoku i pred predykatu. Obie base metody i pred są przenoszone za pośrednictwem metody std::move().
2) Tworzy pusty take_while_viewelement . Podstawowy widok i predykat są konstruowane domyślnie.
Przykład: take_while_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 twv = std::views::take_while(v, [](int i) {return i >= 0; });
for (auto& e : twv)
{
std::cout << e << ' '; // 0 1 2 3
}
std::cout << '\n';
// Using the '|' operator to create a take_view
for (auto i : v | std::views::take_while([](int i) {return i < 5; }))
{
std::cout << i << ' '; // 0 1 2 3 -4
}
}
0 1 2 3
0 1 2 3 -4
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.
Zwraca
Kopia widoku bazowego.
begin
Pobierz iterator do pierwszego elementu w widoku.
1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires
range<const V> &&
indirect_unary_predicate<const Pred, iterator_t<const V>>
Parametry
Brak.
Wartość zwracana
Iterator wskazujący pierwszy element w widoku. Zachowanie jest niezdefiniowane, jeśli widok nie ma predykatu.
Uwagi
W przypadku 1 wymóg oznacza, Simple_view że widok V i const V mają 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> &&
indirect_unary_predicate<const Pred, iterator_t<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 że widok V i const V mają te same typy iteracyjne i sentinel.
pred
Uzyskaj odwołanie do predykatu użytego do wybrania elementów wiodących w widoku.
constexpr const Pred& pred() const;
Wartość zwracana
Odwołanie do predykatu używanego do wybierania elementów wiodących do umieszczenia w widoku.
Przykład: pred
// 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 mv = v | std::views::take_while(
[](int i) {return i < 5; });
std::cout << std::boolalpha << mv.pred()(v[6]); // outputs false because v[6] = 6 and 6 is not less than 5 (the predicate)
}