Пространства имён
Варианты
Действия

std::swap(std::basic_string)

Материал из cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Функции-элементы
Доступ к элементам
Итераторы
Ёмкость
Операции
Поиск
Константы
Правила вывода (C++17)
Функции, не являющиеся элементами
swap(std::basic_string)
Ввод/Вывод
Сравнение
(до C++20)(до C++20)(до C++20)(до C++20)(до C++20)(C++20)
Числовые преобразования
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Вспомогательные классы
 
Определено в заголовочном файле <string>
template< class CharT, class Traits, class Alloc >

void swap( std::basic_string<CharT, Traits, Alloc>& lhs,

           std::basic_string<CharT, Traits, Alloc>& rhs );
(до C++17)
template< class CharT, class Traits, class Alloc >

void swap( std::basic_string<CharT, Traits, Alloc>& lhs,

           std::basic_string<CharT, Traits, Alloc>& rhs ) noexcept(/* смотрите ниже */);
(начиная с C++17)
(до C++20)
template< class CharT, class Traits, class Alloc >

constexpr void
    swap( std::basic_string<CharT, Traits, Alloc>& lhs,

          std::basic_string<CharT, Traits, Alloc>& rhs ) noexcept(/* смотрите ниже */);
(начиная с C++20)

Специализация алгоритма std::swap для std::basic_string. Меняет местами содержимое lhs и rhs.

Эквивалентно lhs.swap(rhs).

Содержание

[править] Параметры

lhs, rhs строки, содержимое которых нужно поменять местами

[править] Возвращаемое значение

(нет)

[править] Сложность

Константная.

Исключения

спецификация noexcept:  
noexcept(noexcept(lhs.swap(rhs)))
(начиная с 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";
 
    std::swap(a, b);
 
    std::cout << "После swap:\n"
                 "a = " << a << "\n"
                 "b = " << b << '\n';
}

Вывод:

Перед swap:
a = AAA
b = BBBB
 
После swap:
a = BBBB
b = AAA

[править] Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 2064 C++11 не элемент swap была noexcept и несовместима с элементом swap noexcept удалено

[править] Смотрите также

меняет местами содержимое
(public функция-элемент) [править]