std::ranges::views::take_while, std::ranges::take_while_view
| ヘッダ <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) |
namespace views {
inline constexpr /*unspecified*/ take_while = /*unspecified*/;
}
|
(C++20以上) | (2) |
| (C++20以上) |
||
template< ranges::viewable_range R, class Pred >
requires /* see below */
constexpr ranges::view auto take_while( R&& r, Pred&& pred );
|
呼び出しシグネチャ | |
template< class Pred >
constexpr /*range adaptor closure*/ take_while( Pred&& pred );
|
(C++20以上) | |
take_while_view は、元となるビュー がそれぞれのコンセプトをモデル化する場合、コンセプト contiguous_range, random_access_range, bidirectional_range, forward_range, input_rangeV をモデル化します。
データメンバ
| メンバ | 説明 | ||||
V base_ (プライベート)
|
基盤となるビュー (説明専用メンバオブジェクト*) | ||||
pred_ (プライベート)
|
基盤となる関数オブジェクト (説明専用メンバオブジェクト*) |
メンバー関数
take_while_viewを構築する
(public member function) |
|
|
基盤となる(アダプトされた)ビューのコピーを返す
(public member function) |
|
|
格納された述語への参照を返す
(public member function) |
|
|
先頭を指すイテレータを返す
(public member function) |
|
|
終端を表すセンチネルを返す
(public member function) |
|
ranges::view_interface から継承 | |
| 派生ビューが空かどうかを返します。ただし、派生ビューが sized_range または forward_range を満たす場合に限ります。 ( std::ranges::view_interface<D> のパブリックメンバ関数)
| |
(C++23)
|
範囲の先頭を指す定数イテレータを返します。
( std::ranges::view_interface<D> のパブリックメンバ関数)
|
(C++23)
|
範囲の定数イテレータに対する番兵を返します。
( std::ranges::view_interface<D> のパブリックメンバ関数)
|
| 派生ビューが空でないかどうかを返します。ただし、ranges::empty がそれに適用可能な場合に限ります。
( std::ranges::view_interface<D> のパブリックメンバ関数)
| |
| 派生ビューのデータのアドレスを取得します。ただし、そのイテレータ型が contiguous_iterator を満たす場合に限ります。 ( std::ranges::view_interface<D> のパブリックメンバ関数)
| |
| 派生ビューの先頭要素を返します。ただし、派生ビューが forward_range を満たす場合に限ります。 ( std::ranges::view_interface<D> のパブリックメンバ関数)
| |
派生ビューの n番目の要素を返します。ただし、派生ビューが random_access_range を満たす場合に限ります。 ( std::ranges::view_interface<D> のパブリックメンバ関数)
| |
推論ガイド
ネストされたクラス
|
センチネル型
( 説明専用メンバークラステンプレート* ) |
注記
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
を返す最初の要素までの初期部分列をスキップする
(クラステンプレート) (レンジアダプタオブジェクト) |