std::basic_string<CharT,Traits,Allocator>::swap
Материал из cppreference.com
< cpp | string | basic string
void swap( basic_string& other ); | (до C++17) | |
void swap( basic_string& other )noexcept(/* смотрите ниже */); | (начиная с C++17) (до C++20) | |
constexprvoid swap( basic_string& other )noexcept(/* смотрите ниже */); | (начиная с C++20) | |
Заменяет содержимое строки на содержимое other. Все итераторы и ссылки могут быть признаны недействительными.
Поведение не определено, если | (начиная с C++11) |
Содержание |
[править]Параметры
other | — | строка для обмена содержимым |
[править]Возвращаемое значение
(нет)
[править]Сложность
Константная.
[править]Исключения
Исключение не генерируется. | (до C++11) |
Исключения могут быть сгенерированы только в том случае, если поведение не определено (смотрите выше). Если по какой-либо причине генерируется исключение, эта функция не имеет эффекта (строгая гарантия безопасности исключений). | (начиная с 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<<"Перед swap:\n""a = "<< a <<"\n""b = "<< b <<"\n\n"; a.swap(b); std::cout<<"После swap:\n""a = "<< a <<"\n""b = "<< b <<'\n';}
Вывод:
Перед swap: a = AAA b = BBBB После swap: a = BBBB b = AAA
[править]Отчёты о дефектах
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
Номер | Применён | Поведение в стандарте | Корректное поведение |
---|---|---|---|
LWG 403 | C++98 | swap() может вызвать исключение | исключение не генерируется |
LWG 535 | C++98 | замена строк не сохраняла порядок символов | порядок также сохраняется |
[править]Смотрите также
меняет местами значения двух объектов (шаблон функции) | |
меняет местами два диапазона элементов (шаблон функции) | |
(C++17) | обменивает содержимое (public функция-элемент std::basic_string_view<CharT,Traits> ) |