Namespaces
Variants

std::ranges:: views:: join_with, std::ranges:: join_with_view

From cppreference.net
Ranges library
Range adaptors
헤더에 정의됨 <ranges>
template < ranges:: input_range V, ranges:: forward_range Pattern >

requires ranges:: view < V > &&
ranges:: input_range < ranges:: range_reference_t < V >> &&
ranges:: view < Pattern > &&
/*concatable*/ < ranges:: range_reference_t < V > , Pattern >
class join_with_view :

ranges:: view_interface < join_with_view < V, Pattern >>
(1) (C++23부터)
namespace views {

inline constexpr /* 지정되지 않음 */ join_with = /* 지정되지 않음 */ ;

}
(2) (C++23부터)
호출 시그니처
template < ranges:: viewable_range R, class Pattern >

requires /* 아래 참조 */

constexpr ranges:: view auto join_with ( R && r, Pattern && pattern ) ;
(C++23부터)
template < class Pattern >
constexpr /* 범위 어댑터 클로저 */ join_with ( Pattern && pattern ) ;
(C++23부터)
1) 범위의 뷰를 평탄화하여 얻은 시퀀스로 구성된 뷰를 나타내는 범위 어댑터로, 뷰의 요소들 사이마다 구분자의 모든 요소가 삽입됩니다. 구분자는 단일 요소일 수도 있고 요소들의 뷰일 수도 있습니다.
/*concatable*/ 의 정의는 std::ranges::concat_view 를 참조하십시오.
2) RangeAdaptorObject . 표현식 views :: join_with ( e, f ) 표현식 동등 합니다 join_with_view ( e, f ) 에 대해, 적절한 부분표현식 e f 가 주어졌을 때.

join_with_view input_range 를 모델링합니다.

join_with_view 는 다음 조건에서 forward_range 를 모델링합니다:

join_with_view 는 다음 조건에서 bidirectional_range 를 모델링합니다:

join_with_view 는 다음 조건일 때 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 제약 조건이 부족했음 제약 조건 업데이트

참고 항목

view 의 시퀀스를 평면화하여 얻은 시퀀스로 구성된 view range s
(클래스 템플릿) (range 어댑터 객체)
적응된 뷰들의 연결로 구성된 view
(클래스 템플릿) (커스터마이제이션 포인트 객체)