std::ranges::views::take_while, std::ranges::take_while_view
From cppreference.com
| ヘッダ <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以降) | |
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>(C++23まで)movable-box<Pred>(C++23以降) pred_ (private) |
基になる関数オブジェクト (説明用のメンバオブジェクト*) |
[編集] メンバー関数
take_while_view を構築する(public メンバ関数) | |
| 基になる(適応された)ビューのコピーを返す (public member function) | |
| 保存されている述語への参照を返す (public member function) | |
| 先頭へのイテレータを返す (public メンバ関数) | |
| 末尾を表すセンチネルを返す (public メンバ関数) | |
std::ranges::view_interface から継承 | |
派生ビューが空かどうかを返す。sized_range または forward_range を満たす場合にのみ提供される( std::ranges::view_interface<D> の public メンバ関数) | |
| (C++23) |
範囲の先頭への定数イテレータを返す ( std::ranges::view_interface<D> の public メンバ関数) |
| (C++23) |
範囲の定数イテレータの番兵を返す ( std::ranges::view_interface<D> の public メンバ関数) |
| 派生ビューが空でないかどうかを返す。ranges::empty が適用可能な場合にのみ提供される ( std::ranges::view_interface<D> の public メンバ関数) | |
イテレータ型が contiguous_iterator を満たす場合にのみ、派生ビューのデータのアドレスを取得する( std::ranges::view_interface<D> の公開メンバ関数) | |
派生ビューが forward_range を満たす場合に、派生ビューの最初の要素を返す( std::ranges::view_interface<D> の public メンバ関数) | |
派生ビューが random_access_range を満たす場合にのみ、派生ビューの n番目の要素を返す( std::ranges::view_interface<D> の public メンバ関数) | |
[編集] 推論ガイド
[編集] ネストされたクラス
| センチネル型 (説明専用メンバクラステンプレート*) |
[編集] 例
このコードを実行
#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(クラステンプレート) (rangeアダプタオブジェクト) |
別のviewの要素から、述語がfalseを返す最初の要素までの先頭部分シーケンスをスキップして構成される view(クラステンプレート) (rangeアダプタオブジェクト) |