Namespaces
Variants

std::ranges:: views:: take_while, std::ranges:: take_while_view

From cppreference.net
Ranges library
Range adaptors
ヘッダーで定義 <ranges>
template < ranges:: view V, class Pred >

requires ranges:: input_range < V > &&
std:: is_object_v < Pred > &&
std:: indirect_unary_predicate < const Pred, ranges:: iterator_t < V >>
class take_while_view

: public ranges:: view_interface < take_while_view < V, Pred >>
(1) (C++20以降)
namespace views {

inline constexpr /*unspecified*/ take_while = /*unspecified*/ ;

}
(2) (C++20以降)
呼び出しシグネチャ
template < ranges:: viewable_range R, class Pred >

requires /* 下記参照 */

constexpr ranges:: view auto take_while ( R && r, Pred && pred ) ;
(C++20以降)
template < class Pred >
constexpr /*range adaptor closure*/ take_while ( Pred && pred ) ;
(C++20以降)
1) 基となるシーケンスの要素からなる view を表す範囲アダプタで、先頭から始まり、述語が false を返す最初の要素で終了する。
2) RangeAdaptorObject 。式 views :: take_while ( e, f ) は、適切な部分式 e および f に対して、 式等価 である take_while_view ( e, f ) である。

take_while_view は、基となるビュー V がそれぞれのコンセプトをモデルする場合、 contiguous_range random_access_range bidirectional_range forward_range 、および input_range のコンセプトをモデルします。

目次

データメンバ

メンバー 説明
V base_ (private) 基となるビュー
( 説明専用メンバーオブジェクト* )
copyable-box <Pred> (until C++23) movable-box <Pred> (since C++23) pred_ (private) 基となる関数オブジェクト
( 説明専用メンバーオブジェクト* )

メンバー関数

take_while_view を構築する
(public member function)
基盤となる(アダプトされた)ビューのコピーを返す
(public member function)
格納された述語への参照を返す
(public member function)
先頭を指すイテレータを返す
(public member function)
終端を表すセンチネルを返す
(public member function)
std::ranges::view_interface から継承
派生ビューが空かどうかを返す( sized_range または forward_range を満たす場合にのみ提供)
( std::ranges::view_interface<D> のpublic member function)
(C++23)
範囲の先頭を指す定数イテレータを返す
( std::ranges::view_interface<D> のpublic member function)
(C++23)
範囲の定数イテレータ用センチネルを返す
( std::ranges::view_interface<D> のpublic member function)
派生ビューが空でないかどうかを返す( ranges::empty が適用可能な場合にのみ提供)
( std::ranges::view_interface<D> のpublic member function)
派生ビューのデータのアドレスを取得する(そのイテレータ型が contiguous_iterator を満たす場合にのみ提供)
( std::ranges::view_interface<D> のpublic member function)
派生ビューの先頭要素を返す( forward_range を満たす場合に提供)
( std::ranges::view_interface<D> のpublic member function)
派生ビューの n 番目の要素を返す( random_access_range を満たす場合にのみ提供)
( std::ranges::view_interface<D> のpublic member function)

推論ガイド

ネストされたクラス

センチネル型
( 説明専用メンバークラステンプレート* )

注記

forward_iterator s に対して、 views :: take_while ( v, pred ) ranges:: subrange { ranges:: begin ( v ) , ranges:: find_if_not ( v, pred ) } と類似していますが、後者は構築時にのみ pred を呼び出すのに対し(前者は有効な take_while イテレータが番兵と比較されるたびに pred を呼び出します)。

#include <iostream>
#include <ranges>
int main()
{
    for (int year : std::views::iota(2020)
                  | std::views::take_while([](int y){ return y < 2026; }))
        std::cout << year << ' ';
    std::cout << '\n';
    const char note[]{"Today is yesterday's tomorrow!..."};
    auto not_dot = [](char c){ return c != '.'; };
    for (char x : std::ranges::take_while_view(note, not_dot))
        std::cout << x;
    std::cout << '\n';
}

出力:

2020 2021 2022 2023 2024 2025
Today is yesterday's tomorrow!

関連項目

別の view の最初のN個の要素から構成される view
(クラステンプレート) (レンジアダプタオブジェクト)
別の view の要素から構成される view 。述語が false を返す最初の要素までの初期部分列をスキップする
(クラステンプレート) (レンジアダプタオブジェクト)