Namespaces
Variants

std::ranges::drop_view<V>:: drop_view

From cppreference.net
Ranges library
Range adaptors
drop_view ( ) requires std:: default_initializable < V > = default ;
(1) (C++20 起)
constexpr explicit drop_view ( V base, ranges:: range_difference_t < V > count ) ;
(2) (C++20 起)

构造一个 drop_view

1) 默认构造函数。 值初始化 底层视图 base_ 并将计数 count_ 初始化为 0 。构造完成后, base() 返回 V ( ) 的副本,且 size() 等于底层视图的大小。
2) 使用 std :: move ( base ) 初始化底层视图 base_ ,并使用 count 初始化计数 count_ 。构造完成后, base() 返回 base 的副本,而 size() base 的大小不小于 count 时返回 ranges:: size ( base ) - count ,否则返回 0

参数

base - 底层视图
count - 要跳过的元素数量

示例

#include <algorithm>
#include <array>
#include <iostream>
#include <iterator>
#include <ranges>
int main()
{
    constexpr std::array hi{'H', 'e', 'l', 'l', 'o', ',',
                            ' ', 'C', '+', '+', '2', '0'};
    std::ranges::for_each(hi, [](const char c){ std::cout << c; });
    std::cout << '\n';
    constexpr auto n = std::distance(hi.cbegin(), std::ranges::find(hi, 'C'));
    auto cxx = std::ranges::drop_view{hi, n};
    std::ranges::for_each(cxx, [](const char c){ std::cout << c; });
    std::cout << '\n';
}

输出:

Hello, C++20
C++20

缺陷报告

下列行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

缺陷报告 应用于 发布时的行为 正确行为
LWG 3714
( P2711R1 )
C++20 多参数构造函数未声明为 explicit 改为 explicit