std::basic_string<CharT,Traits,Allocator>:: swap
|
void
swap
(
basic_string
&
other
)
;
|
(до C++17) | |
|
void
swap
(
basic_string
&
other
)
noexcept
(
/* см. ниже */
)
;
|
(начиная с C++17)
(constexpr начиная с C++20) |
|
Обменивает содержимое строки с содержимым other . Все итераторы и ссылки могут стать недействительными.
|
Если
std::
allocator_traits
<
allocator_type
>
::
propagate_on_container_swap
::
value
равно
true
, то аллокаторы обмениваются с помощью неквалифицированного вызова нечленной функции
|
(начиная с C++11) |
Содержание |
Параметры
| other | - | строка для обмена содержимым |
Сложность
Константа.
Исключения
|
Исключения не выбрасываются. |
(until C++11) |
|
Исключения не выбрасываются, если поведение не является неопределенным. Если исключение выбрасывается по любой причине, эта функция не имеет эффекта ( гарантия строгой безопасности исключений ). |
(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>
)
|