Namespaces
Variants

std::inplace_vector<T,N>::try_append_range

cppreference.net에서
 
 
 
 
template< container-compatible-range<T> R >
constexpr std::ranges::borrowed_iterator_t<R> try_append_range( R&& rg );
(C++26부터)
(C++26에서 제거됨)

초기 요소의 복사본을 rg에 있는 end() 앞에 추가하며, 모든 요소가 삽입되거나 내부 저장소가 소진될 때까지(즉, size() == capacity()가 true일 때까지) 반복합니다.

모든 반복자와 참조는 유효합니다. end() 반복자는 무효화됩니다.

rg의 각 반복자는 최대 한 번 역참조됩니다.

매개변수

rg - a container compatible range , that is, an input_range whose elements are convertible to T
타입 요구사항
-
T must be EmplaceConstructible into inplace_vector from * ranges:: begin ( rg ) . 그렇지 않으면 동작은 정의되지 않습니다.

반환값

rg 의 첫 번째 요소 중 * this 에 삽입되지 않은 요소를 가리키는 반복자, 또는 해당 요소가 존재하지 않는 경우 ranges:: end ( rg ) 입니다.

복잡도

삽입된 요소의 수에 선형적으로 비례합니다.

예외

삽입된 요소의 초기화 과정에서 발생하는 모든 예외.

inplace_vector 는 기본 예외 안전성 보장 을 제공합니다. 즉, 호출 전 컨테이너의 모든 요소가 보존되며, 이미 삽입된 모든 요소(예외 발생 이전의 요소들)도 함께 보존됩니다.

참고

기능 테스트 매크로 값 표준 기능
__cpp_lib_inplace_vector 202603L (C++26) 제거됨 try_append_range

예제

#include <cassert>
#include <initializer_list>
#include <inplace_vector>

int main()
{
#if defined(__cpp_lib_inplace_vector) and (__cpp_lib_inplace_vector < 202603L)
    using I = std::inplace_vector<int, 8>;
    auto nums = I{1, 2, 3};
    const auto rg = {-1, -2, -3};

    auto it = nums.try_append_range(rg);
    assert(nums.size() == 6);
    assert((nums == I{1, 2, 3, -1, -2, -3}));
    assert(it == rg.end());

    it = nums.try_append_range(rg);
    assert(nums.size() == 8);
    assert((nums == I{1, 2, 3, -1, -2, -3, -1, -2}));
    assert(it == rg.begin() + 2);
#endif
}

참고 항목

끝에 요소들의 범위를 추가함
(public member function)
끝에 요소를 추가함
(public member function)
끝에 요소를 추가하려 시도함
(public member function)
무조건적으로 끝에 요소를 추가함
(public member function)
끝에 제자리에서 요소를 생성함
(public member function)
끝에 제자리에서 요소를 생성하려 시도함
(public member function)
무조건적으로 끝에 제자리에서 요소를 생성함
(public member function)
마지막 요소를 제거함
(public member function)
인수에서 추론된 타입의 std::back_insert_iterator 를 생성함
(function template)