std::ranges:: views:: take_while, std::ranges:: take_while_view
|
ヘッダーで定義
<ranges>
|
||
|
template
<
ranges::
view
V,
class
Pred
>
requires
ranges::
input_range
<
V
>
&&
|
(1) | (C++20以降) |
|
namespace
views
{
inline
constexpr
/*unspecified*/
take_while
=
/*unspecified*/
;
|
(2) | (C++20以降) |
|
呼び出しシグネチャ
|
||
|
template
<
ranges::
viewable_range
R,
class
Pred
>
requires
/* 下記参照 */
|
(C++20以降) | |
|
template
<
class
Pred
>
constexpr /*range adaptor closure*/ take_while ( Pred && pred ) ; |
(C++20以降) | |
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!
関連項目
|
(C++20)
|
別の
view
の最初のN個の要素から構成される
view
(クラステンプレート) (レンジアダプタオブジェクト) |
別の
view
の要素から構成される
view
。述語が
false
を返す最初の要素までの初期部分列をスキップする
(クラステンプレート) (レンジアダプタオブジェクト) |