drop_while_view
class (Standardowa biblioteka C++)
Widok zawierający elementy zakresu, które pozostają po usunięciu elementów wiodących pasujących do predykatu.
Składnia
template<ranges::view V, class P>
requires ranges::input_range<V> &&
std::is_object_v<P> &&
std::indirect_unary_predicate<const P, ranges::iterator_t<V>>
class drop_while_view : public ranges::view_interface<drop_while_view<V, P>>;
Parametry szablonu
V
Typ widoku bazowego.
P
Typ predykatu, który określa elementy wiodące do upuszczania.
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::drop_while |
Zakres bazowy | Musi być spełniony forward_range lub wyższy, a iteratory bazowego zakresu muszą modelować sized_sentinel_for |
Typ elementu | Taki sam jak zakres bazowy |
Wyświetl kategorię iteratora | Taki sam jak zakres bazowy |
Wielkości | Tylko wtedy, gdy zakres bazowy spełnia random_access_range |
Jest const iterowalne |
Nie. |
Wspólny zakres | Tylko wtedy, gdy zakres bazowy spełnia common_range |
Pożyczony zakres | Tylko wtedy, gdy zakres bazowy spełnia borrowed_range |
Elementy członkowskie
Funkcje składowe | Opis |
---|---|
Konstruktory | Skonstruuj widok. |
base |
Pobierz widok bazowy. |
begin |
Pobierz iterator do pierwszego elementu. |
end |
Pobierz element sentinel na końcu widoku. |
pred |
Uzyskaj odwołanie do predykatu określającego, które elementy mają być upuszczane. |
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. |
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
Skonstruuj wystąpienie klasy drop_while_view
.
1) constexpr drop_while_view(V base, P pred);
2) drop_while_view() requires default_initializable<V> && default_initializable<P> = default;
Parametry
base
Zakres bazowy.
pred
Predykat określający elementy wiodące do upuszczania.
Aby uzyskać informacje o typach parametrów szablonu, zobacz Parametry szablonu.
Wartość zwracana
drop_while_view
Wystąpienie.
Uwagi
Najlepszym sposobem utworzenia elementu drop_while_view
jest użycie adaptera views::drop_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 drop_while_view
element z base
widoku i pred
predykatu. Obie base
metody i pred
są przenoszone za pośrednictwem metody std::move()
.
2) Konstrukcje domyślne a drop_while_view
.
Przykład: drop_while_view
// requires /std:c++20 or later
#include <ranges>
#include <vector>
#include <iostream>
void print(auto v)
{
for (auto& x : v)
{
std::cout << x << ' ';
}
std::cout << '\n';
}
int main()
{
std::vector<int> v{ 0, 1, 2, 3, -4, 5, 6 };
auto myView = std::views::drop_while(
v,
[](int i) {return i >= 0; });
print(myView); // -4 5 6
auto myView2 = v | std::views::drop_while(
[](int i) {return i < 5; });
print(myView2); // 5 6
}
-4 5 6
5 6
base
Pobierz widok bazowy.
// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;
// Uses std::move() to return the underlying view
constexpr V base() &&;
Parametry
Brak.
Zwraca
Widok bazowy.
begin
Pobierz iterator do pierwszego elementu w widoku.
constexpr auto begin();
Wartość zwracana
Iterator wskazujący pierwszy element w widoku. Zachowanie jest niezdefiniowane, jeśli widok nie ma predykatu.
end
Pobierz element sentinel na końcu widoku.
constexpr auto end()
Wartość zwracana
Sentinel, który jest zgodny z ostatnim elementem w widoku:
pred
Uzyskaj odwołanie do predykatu określającego, które elementy wiodące do upuszczania.
constexpr const Pred& pred() const;
Wartość zwracana
Odwołanie do predykatu.
Uwagi
Jeśli widok nie przechowuje predykatu, zachowanie jest niezdefiniowane.
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::drop_while(
[](int i) {return i < 5; }); // drop the leading elements < 5
std::cout << std::boolalpha << mv.pred()(v[6]); // outputs "false" because v[6] = 6 and 6 is not less than 5 (the predicate)
}
false
Zobacz też
<ranges>
drop_while
adapter zakresu
take_while
adapter zakresu
take_while_view
klasy widoków
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla