drop_view 类(C++ 标准库)

创建一个视图,其中排除了范围前 N 个元素。

语法

template<ranges::view V>
class drop_view : public ranges::view_interface<drop_view<V>>;

模板参数

V
基础视图的类型。

视图特征

有关下列条目的说明,请参阅视图类特征

特征 说明
范围适配器 views::drop
基础范围 必须满足 output_range 或更高范围
元素类型 与基础范围相同
视图迭代器类别 与基础范围相同
已设置大小 仅当基础范围满足 sized_range 要求时
const 可迭代 仅当基础范围 const 可迭代且满足 random_access_rangesized_range 要求
常见范围 仅当基础范围为 common_range
借入范围 仅当基础范围满足 borrowed_range 要求时

成员

成员函数 描述
构造函数C++20 构造 drop_view
baseC++20 获取基础视图。
beginC++20 获取指向第一个元素的迭代器。
endC++20 获取视图末尾的 sentinel。
sizeC++20 获取此视图中的元素数。 基础范围必须满足 sized_range 要求。
view_interface 继承 描述
backC++20 获取最后一个元素。
dataC++20 获取指向第一个元素的指针。
emptyC++20 测试 drop_view 是否为空。
frontC++20 获取第一个元素。
operator[]C++20 获取指定位置的元素。
operator boolC++20 测试 drop_view 是否不为空。

要求

标头: <ranges> (自C++20以来)

命名空间std::ranges

编译器选项:/std:c++20或更高版本是必需的。

构造函数

构造 drop_view 的实例

template<ranges::view V>
class drop_view : public ranges::view_interface<drop_view<V>>

模板参数

V
基础视图的类型。

返回值

基础范围的视图,不包括前面指定的元素数。
如果指定要删除的元素多于基础区域中的元素,则会返回 empty_view

备注

创建 drop_view 的最佳方法是使用 views::drop 范围适配器。 范围适配器是创建视图类的预期方法。 如果要创建自己的自定义视图类型,会公开视图类型。

示例: drop_view

// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>

int main()
{
    std::vector<int> v{ 1, 2, 3, 4, 5 };
    auto newView = std::views::drop(v, 3);
    for (auto e : newView) // outputs 4 5
    {
        std::cout << e << ' ';
    }
    std::cout << '\n';

    auto numbers = std::views::iota(0) | std::views::take(10); // generate a view of 10 integers
    for (auto i : numbers | std::views::drop(5)) // use the '|' syntax to create a drop_view
    {
        std::cout << i << ' '; // outputs 5 6 7 8 9
    }
}
4 5
5 6 7 8 9

base

获取基础视图的副本。

// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;

// Uses a move constructor to return the underlying view
constexpr V base() &&;

参数

无。

返回值

基础视图。

begin

获取指向 drop_view 中第一个元素的迭代器。

constexpr auto begin()
  requires (!(Simple_view<V> && ranges::random_access_range<const V> && ranges::sized_range<const V>));

constexpr auto begin() const
  requires ranges::random_access_range<const V> && ranges::sized_range<const V>;

参数

无。

返回值

指向 drop_view 中的第一个元素的迭代器。

包含元素 10、20 和 30 的矢量的图片。第一个元素包含 10,被标记为 begin()。最后一个元素包含 30,被标记为“last element”。最后一个元素之后的虚框指示 sentinel,被标记为 end()。

end

获取 drop_view 末尾的 sentinel

constexpr auto end() requires (!Simple_view<V>);
constexpr auto end() const requires ranges::range<const V>;

参数

无。

返回值

drop_view 中最后一个元素后面的 sentinel:

包含元素 10、20 和 30 的矢量的图片。第一个元素包含 10,被标记为 begin()。最后一个元素包含 30,被标记为“last element”。最后一个元素之后的虚框指示 sentinel,被标记为 end()。

size

获取 drop_view 中的元素数。

constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;

参数

无。

返回值

drop_view 中的元素的数量。

注解

基础范围必须满足 sized_range 要求。

另请参阅

<ranges>
drop 范围适配器
take_while()
take_while_view
视图类