std::basic_string<CharT,Traits,Allocator>:: swap
|
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
라면, 할당자는 비멤버
|
(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 멤버 함수)
|