Namespaces
Variants

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

cppreference.net에서 가져옴
 
 
Ranges 라이브러리
Range 어댑터
 
 
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>>
헤더에 정의됨 (C++23부터)
namespace views {
    inline constexpr /* unspecified */ join_with = /* unspecified */;
}
(2) (C++23부터)
호출 시그니처
template< ranges::viewable_range R, class Pattern >
    requires /* see below */
constexpr ranges::view auto join_with( R&& r, Pattern&& pattern );
(C++23부터)
template< class Pattern >
constexpr /* range adaptor closure */ join_with( Pattern&& pattern );
(C++23부터)
1) 범위의 뷰를 평면화하여 얻은 시퀀스로 구성된 view를 나타내는 범위 어댑터로, 뷰의 요소 사이사이에 구분자의 모든 요소가 삽입됩니다. 구분자는 단일 요소 또는 요소의 뷰일 수 있습니다.
/*concatable*/의 정의는 std::ranges::concat_view를 참조하십시오.
2) RangeAdaptorObject. views::join_with(e, f) 표현식은 적합한 부분 표현식 과 에 대해 join_with_view(e, f)과 eexpression-equivalentf합니다.

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)
ranges::view_interface
empty파생된 뷰가 비어 있는지 여부를 반환합니다. 단, 파생된 뷰가 sized_range 또는
forward_rangestd::ranges::view_interface<D>를 만족하는 경우에만 제공됩니다. (
(C++23)
범위의 시작을 가리키는 상수 반복자를 반환합니다. std::ranges::view_interface<D>(
(C++23)
범위의 상수 반복자에 대한 종점을 반환합니다. std::ranges::view_interface<D>(
operator bool파생된 뷰가 비어 있지 않은지 여부를 반환합니다. 단, ranges::empty
가 해당 뷰에 적용 가능한 경우에만 제공됩니다. (std::ranges::view_interface<D>의 공개 멤버 함수)
파생된 뷰의 첫 번째 요소를 반환합니다. 단, 파생된 뷰가 forward_range
를 만족하는 경우에 제공됩니다. (std::ranges::view_interface<D>의 공개 멤버 함수)
파생된 뷰의 마지막 요소를 반환합니다. 단, 파생된 뷰가 bidirectional_range와 common_range
를 만족하는 경우에만 제공됩니다. (std::ranges::view_interface<D>의 공개 멤버 함수)

추론 가이드

중첩 클래스

반복자 타입
( 설명 전용 멤버 클래스 템플릿* )
센티넬 타입
( 설명 전용 멤버 클래스 템플릿* )

참고 사항

기능 테스트 매크로 값 표준 기능
__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
(클래스 템플릿) (커스터마이제이션 포인트 객체)