drop_while_view
class (стандартная библиотека C++)
Представление, содержащее элементы диапазона, которые остаются после удаления ведущих элементов, соответствующих предикату.
Синтаксис
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>>;
Параметры шаблона
V
Тип базового представления.
P
Тип предиката, определяющего ведущие элементы для удаления.
Просмотр характеристик
Описание следующих записей см. в разделе "Просмотр характеристик класса"
Characteristic | Description |
---|---|
Адаптер диапазона | views::drop_while |
Базовый диапазон | Должен соответствовать forward_range или выше, а итераторы базового диапазона должны моделировать sized_sentinel_for |
Тип элемента | Совпадает с базовым диапазоном |
Просмотр категории итератора | Совпадает с базовым диапазоном |
Размер | Только если базовый диапазон удовлетворяет random_access_range |
Is const -iterable |
No |
Общий диапазон | Только если базовый диапазон удовлетворяет common_range |
Заимствуемый диапазон | Только если базовый диапазон удовлетворяет borrowed_range |
Участники
Функции-члены | Description |
---|---|
Конструкторы | Создайте представление. |
base |
Получите базовое представление. |
begin |
Получите итератор к первому элементу. |
end |
Получите sentinel в конце представления. |
pred |
Получите ссылку на предикат, определяющий, какие элементы нужно удалить. |
Наследуется от view_interface | Description |
back C++20 |
Получите последний элемент. |
data C++20 |
Получите указатель на первый элемент. |
empty C++20 |
Проверьте, является ли представление пустым. |
front C++20 |
Получите первый элемент. |
operator[] C++20 |
Получите элемент в указанной позиции. |
operator bool C++20 |
Проверьте, не является ли представление пустым. |
size |
Получение количества элементов в представлении. |
Требования
Заголовок: <ranges>
(с C++20)
Пространство имен: std::ranges
Параметр компилятора: /std:c++20
или более поздней версии требуется.
Конструкторы
Создание экземпляра drop_while_view
объекта .
1) constexpr drop_while_view(V base, P pred);
2) drop_while_view() requires default_initializable<V> && default_initializable<P> = default;
Параметры
base
Базовый диапазон.
pred
Предикат, определяющий ведущие элементы для удаления.
Сведения о типах параметров шаблона см. в разделе "Параметры шаблона".
Возвращаемое значение
Экземпляр класса drop_while_view
.
Замечания
Лучший способ создания drop_while_view
— использовать views::drop_while
адаптер диапазона. Адаптеры диапазона — это способ создания классов представления. Типы представлений предоставляются в случае, если вы хотите создать собственный тип пользовательского представления.
1) Перемещение конструкций drop_while_view
base
из представления и pred
предиката. Оба base
и pred
перемещаются через std::move()
.
2) По умолчанию создает объект drop_while_view
.
Пример: 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
Получите базовое представление.
// 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() &&;
Параметры
Нет.
Возвраты
Базовое представление.
begin
Получите итератор к первому элементу в представлении.
constexpr auto begin();
Возвращаемое значение
Итератор, указывающий на первый элемент в представлении. Поведение не определено, если представление не имеет предиката.
end
Получите sentinel в конце представления.
constexpr auto end()
Возвращаемое значение
Sentinel, следующий за последним элементом в представлении:
pred
Получите ссылку на предикат, определяющий, какие ведущие элементы нужно удалить.
constexpr const Pred& pred() const;
Возвращаемое значение
Ссылка на предикат.
Замечания
Если представление не хранит предикат, поведение не определено.
Пример: 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
См. также
<ranges>
drop_while
адаптер диапазона
take_while
адаптер диапазона
take_while_view
Классы представления