Namespaces
Variants

std::basic_string<CharT,Traits,Allocator>:: swap

From cppreference.net
std::basic_string
void swap ( basic_string & other ) ;
(C++17 이전)
void swap ( basic_string & other ) noexcept ( /* see below */ ) ;
(C++17 이후)
(C++20부터 constexpr)

문자열의 내용을 other 와 교환합니다. 모든 반복자와 참조는 무효화될 수 있습니다.

만약 std:: allocator_traits < allocator_type > :: propagate_on_container_swap :: value true 라면, 할당자는 비멤버 swap 에 대한 한정되지 않은 호출을 사용하여 교환됩니다. 그렇지 않으면, 할당자는 교환되지 않습니다 (그리고 만약 get_allocator ( ) ! = other. get_allocator ( ) 라면, 동작은 정의되지 않습니다).

(C++11부터)

목차

매개변수

other - 내용을 교환할 문자열

복잡도

상수.

예외

예외가 발생하지 않습니다.

(until C++11)

동작이 정의되지 않은 경우를 제외하고 예외가 발생하지 않습니다.

어떤 이유로든 예외가 발생하면, 이 함수는 아무런 효과도 가지지 않습니다 ( strong exception safety guarantee ).

(since C++11)


noexcept 명세:
noexcept ( std:: allocator_traits < Allocator > :: propagate_on_container_swap :: value ||
std:: allocator_traits < Allocator > :: is_always_equal :: value )
(C++17부터)

예제

#include <iostream>
#include <string>
int main() 
{
    std::string a = "AAA";
    std::string b = "BBBB";
    std::cout << "Before swap:\n"
                 "a = " << a << "\n"
                 "b = " << b << "\n\n";
    a.swap(b);
    std::cout << "After swap:\n"
                 "a = " << a << "\n"
                 "b = " << b << '\n';
}

출력:

Before swap:
a = AAA
b = BBBB
After swap:
a = BBBB
b = AAA

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 403 C++98 swap() 가 예외를 던질 수 있음 예외가 발생하지 않음
LWG 535 C++98 문자열 교환 시 문자 순서가 보존되지 않음 순서도 함께 보존됨
LWG 2151
( P1148R0 )
C++11 전파되지 않는 할당자가 서로 다른 경우
예외가 발생하지 않았음
이 경우 동작은
정의되지 않음

참고 항목

두 객체의 값을 교환
(함수 템플릿)
두 요소 범위를 교환
(함수 템플릿)
내용을 교환
( std::basic_string_view<CharT,Traits> 의 public 멤버 함수)