std::ranges::views::transform, std::ranges::transform_view
| ヘッダ <ranges> で定義 |
||
| (1) | ||
template< ranges::input_range V, std::copy_constructible F > |
(C++20以降) (C++23まで) |
|
| template< ranges::input_range V, std::move_constructible F > |
(C++23から) | |
| namespace views { inline constexpr /*unspecified*/ transform = /*unspecified*/; |
(2) | (C++20以降) |
| 呼び出しシグネチャ |
||
| template< ranges::viewable_range R, class F > requires /* 以下を参照 */ |
(C++20以降) | |
| template< class F > constexpr /*range adaptor closure*/ transform( F&& fun ); |
(C++20以降) | |
viewを表すレンジアダプタ。transform_viewは、基になるビューVがそれぞれのコンセプトをモデルとする場合、random_access_range、bidirectional_range、forward_range、input_range、common_range、およびsized_rangeのコンセプトをモデル化します。
目次 |
[編集] データメンバー
| メンバ | 説明 |
V base_ (private) |
基盤となるビュー (説明用のメンバオブジェクト*) |
copyable-box<F>(C++23まで)movable-box<F>(C++23以降) fun_ (private) |
基になる関数オブジェクト (説明用のメンバオブジェクト*) |
[編集] メンバ関数
transform_viewを構築します。(public メンバ関数) | |
| 基になる(適応された)ビューのコピーを返す (public member function) | |
| 先頭へのイテレータを返す (public メンバ関数) | |
| 終端へのイテレータまたはセンチネルを返す (public メンバ関数) | |
基底(アダプトされた)レンジが sized_range を満たす場合にのみ、要素数を返す(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 メンバ関数) | |
派生ビューが forward_range を満たす場合に、派生ビューの最初の要素を返す( std::ranges::view_interface<D> の public メンバ関数) | |
派生ビューが bidirectional_range と common_range の両方を満たす場合にのみ、派生ビューの最後の要素を返す( std::ranges::view_interface<D> の public メンバ関数) | |
派生ビューが random_access_range を満たす場合にのみ、派生ビューの n番目の要素を返す( std::ranges::view_interface<D> の public メンバ関数) | |
[編集] 推論ガイド
[編集] ネストされたクラス
| イテレータ型 (説明専用メンバクラステンプレート*) | |
| センチネル型 (説明専用メンバクラステンプレート*) |
[編集] 例
#include <algorithm> #include <cstdio> #include <iterator> #include <ranges> #include <string> char rot13a(const char x, const char a) { return a + (x - a + 13) % 26; } char rot13(const char x) { if ('Z' >= x and x >= 'A') return rot13a(x, 'A'); if ('z' >= x and x >= 'a') return rot13a(x, 'a'); return x; } int main() { auto show = [](const unsigned char x) { std::putchar(x); }; std::string in{"cppreference.com\n"}; std::ranges::for_each(in, show); std::ranges::for_each(in | std::views::transform(rot13), show); std::string out; std::ranges::copy(std::views::transform(in, rot13), std::back_inserter(out)); std::ranges::for_each(out, show); std::ranges::for_each(out | std::views::transform(rot13), show); }
出力
cppreference.com pccersrerapr.pbz pccersrerapr.pbz cppreference.com
[編集] 関連項目
| (C++20) |
要素の範囲に関数を適用する (アルゴリズム関数オブジェクト) |