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
/* see below */
|
(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>
(until C++23)
movable-box
<F>
(since C++23)
fun_
(private)
|
기본 함수 객체
( 설명 전용 멤버 객체* ) |
멤버 함수
transform_view
를 생성합니다
(public 멤버 함수) |
|
|
기본(적응된) 뷰의 복사본을 반환합니다
(public 멤버 함수) |
|
|
시작을 가리키는 반복자를 반환합니다
(public 멤버 함수) |
|
|
끝을 가리키는 반복자나 센티널을 반환합니다
(public 멤버 함수) |
|
기본(적응된) 범위가
sized_range
를 만족할 때만 제공되며, 요소의 개수를 반환합니다
(public 멤버 함수) |
|
|
(C++26)
|
결과
approximately_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.net\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.net pccersrerapr.pbz pccersrerapr.pbz cppreference.net
참고 항목
|
(C++20)
|
요소 범위에 함수를 적용함
(알고리즘 함수 객체) |