std::ranges:: views:: join_with, std::ranges:: join_with_view
|
헤더에 정의됨
<ranges>
|
||
|
template
<
ranges::
input_range
V,
ranges::
forward_range
Pattern
>
requires
ranges::
view
<
V
>
&&
|
(1) | (C++23부터) |
|
namespace
views
{
inline
constexpr
/* 지정되지 않음 */
join_with
=
/* 지정되지 않음 */
;
|
(2) | (C++23부터) |
|
호출 시그니처
|
||
|
template
<
ranges::
viewable_range
R,
class
Pattern
>
requires
/* 아래 참조 */
|
(C++23부터) | |
|
template
<
class
Pattern
>
constexpr /* 범위 어댑터 클로저 */ join_with ( Pattern && pattern ) ; |
(C++23부터) | |
join_with_view
는
input_range
를 모델링합니다.
join_with_view
는 다음 조건에서
forward_range
를 모델링합니다:
- ranges:: range_reference_t < V > 이 참조형이고,
-
V와 ranges:: range_reference_t < V > 각각이forward_range를 모델링하는 경우
join_with_view
는 다음 조건에서
bidirectional_range
를 모델링합니다:
- ranges:: range_reference_t < V > 는 참조형입니다,
-
V, ranges:: range_reference_t < V > , 그리고Pattern각각이bidirectional_range를 모델링하며, -
ranges::
range_reference_t
<
V
>
와
Pattern각각이common_range를 모델링합니다.
join_with_view
는 다음 조건일 때
common_range
를 모델링합니다:
- ranges:: range_reference_t < V > 이 참조형이고,
-
V와 ranges:: range_reference_t < V > 각각이forward_range와common_range를 모델링하는 경우.
목차 |
중첩 타입
| 유형 | 정의 |
InnerRng
|
ranges::
range_reference_t
<
V
>
( 설명 전용 멤버 유형* ) |
데이터 멤버
| 멤버 | 정의 |
V
base_
|
기반(적응된) 뷰
( 설명 전용 멤버 객체* ) |
Pattern
pattern_
|
패턴 객체
( 설명 전용 멤버 객체* ) |
non-propagating-cache
<
ranges::
iterator_t
<
V
>>
outer_it_
(
V
가
forward_range
를 모델링하지 않는 경우에만 존재)
|
외부 반복자의 캐시
( 설명 전용 멤버 객체* ) |
non-propagating-cache
<
std::
remove_cv_t
<
InnerRng
>>
inner_
( std:: is_reference_v <
InnerRng
>
가
false
인 경우에만 존재)
|
내부 범위의 캐시
( 설명 전용 멤버 객체* ) |
멤버 함수
join_with_view
를 생성합니다
(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)
|
|
파생 뷰의 첫 번째 요소를 반환합니다.
forward_range
를 만족할 때 제공됩니다
(
std::ranges::view_interface<D>
의 public member function)
|
|
파생 뷰의 마지막 요소를 반환합니다.
bidirectional_range
와
common_range
를 만족할 때만 제공됩니다
(
std::ranges::view_interface<D>
의 public member function)
|
|
추론 가이드
중첩 클래스
|
반복자 타입
( 설명 전용 멤버 클래스 템플릿* ) |
|
|
센티넬 타입
( 설명 전용 멤버 클래스 템플릿* ) |
참고 사항
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_ranges_join_with
|
202202L
|
(C++23) |
std::ranges::join_with_view
|
예제
#include <iostream> #include <ranges> #include <string_view> #include <vector> int main() { using namespace std::literals; std::vector v{"This"sv, "is"sv, "a"sv, "test."sv}; auto joined = v | std::views::join_with(' '); for (auto c : joined) std::cout << c; std::cout << '\n'; }
출력:
This is a test.
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 4074 | C++23 |
join_with_view
제약 조건이 부족했음
|
제약 조건 업데이트 |
참고 항목
|
(C++20)
|
view
의 시퀀스를 평면화하여 얻은 시퀀스로 구성된
view
range
s
(클래스 템플릿) (range 어댑터 객체) |
적응된 뷰들의 연결로 구성된
view
(클래스 템플릿) (커스터마이제이션 포인트 객체) |