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