Namespaces
Variants

std::ranges:: iter_swap

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
헤더 파일에 정의됨 <iterator>
namespace ranges {

inline namespace /* unspecified */ {
inline constexpr /* unspecified */
iter_swap = /* unspecified */ ;
}

}
(C++20부터)
(커스터마이제이션 포인트 객체)
호출 시그니처
template < class I1, class I2 >
constexpr void iter_swap ( I1 && i1, I2 && i2 ) noexcept ( /* see below */ ) ;
(C++20부터)
헬퍼 함수
template < class X, class Y >

constexpr std:: iter_value_t < X >
iter - exchange - move ( X && x, Y && y )
noexcept ( noexcept ( std:: iter_value_t < X > ( std :: ranges:: iter_move ( x ) ) ) &&

noexcept ( * x = std :: ranges:: iter_move ( y ) ) ) ;
( (설명 전용*) )

두 반복자가 가리키는 값을 교환합니다.

설명 전용 헬퍼 함수 iter-exchange-move 의 효과는 다음과 동일합니다.

std::iter_value_t<X> old(std::ranges::iter_move(x));
*x = std::ranges::iter_move(y);
return old;

ranges :: iter_swap ( i1, i2 ) 는 다음 표현과 표현적 동등 입니다:

  1. ( void ) iter_swap ( i1, i2 ) , 만약 i1 또는 i2 가 클래스나 열거형 타입을 가지고 표현식이 잘 구성된 경우, 여기서 iter_swap 오버로드 해결 은 추가 후보 void iter_swap ( auto , auto ) = delete ; [1] 를 사용하여 수행되며, std::ranges::iter_swap 자체는 제외됩니다.
    • 선택된 오버로드가 i1 i2 이 나타내는 값을 교환하지 않으면, 프로그램은 형식 오류이며 진단이 필요하지 않습니다.
  2. 그렇지 않으면, ranges:: swap ( * i1, * i2 ) , 만약 I1 I2 모두 indirectly_readable 을 모델링하고, std:: iter_reference_t < I1 > std:: iter_reference_t < I2 > swappable_with 을 모델링하는 경우.
  3. 그렇지 않으면, ( void ) ( * i1 = iter-exchange-move ( i2, i1 ) ) , 만약 std:: indirectly_movable_storable < I1, I2 > std:: indirectly_movable_storable < I2, I1 > 이 모두 모델링되는 경우, 단 i1 은 한 번만 평가됩니다.
  4. 그렇지 않으면, ranges :: iter_swap ( i1, i2 ) 은 형식 오류이며, 이는 ranges :: iter_swap ( i1, i2 ) 이 템플릿 인스턴스화의 직접적 문맥에 나타날 때 치환 실패 를 초래할 수 있습니다.
  1. 이는 제약 없는 std::iter_swap 호출을 배제합니다.

커스터마이제이션 포인트 객체

ranges::iter_swap 이름은 사용자 지정 지점 객체 를 나타내며, 이는 리터럴 semiregular 클래스 타입의 const 함수 객체 입니다. 자세한 내용은 CustomizationPointObject 를 참조하십시오.

예제

참고 항목

(C++20)
조정된 기본 반복자가 가리키는 객체들을 교환합니다
(함수 템플릿)
(C++20)
기본 반복자가 가리키는 객체들을 교환합니다
(함수 템플릿)
두 반복자가 가리키는 요소들을 교환합니다
(함수 템플릿)