The Wayback Machine - https://web.archive.org/web/20190830142930/https://ru.cppreference.com/w/cpp/algorithm/swap
Пространства имён
Варианты
Действия

std::swap

Материал из cppreference.com
< cpp‎ | algorithm
 
 
Алгоритмы
Функции
Немодифицирующие линейные операции
Модифицирующие линейные операции
Разделение
Сортировка (на отсортированных промежутках)
Бинарный поиск (на отсортированных промежутках)
Множества (на отсортированных промежутках)
Куча
Минимум/максимум
Числовые операции
Библиотека C
 
Определён в заголовочном файле <algorithm>
Определён в заголовочном файле<utility>
(до C++11)
(начиная с C++11)
template<class T >
void swap( T& a, T& b );
(1)
template<class T2, size_t N >
void swap( T2 (&a)[N], T2 (&b)[N]);
(2) (начиная с C++11)

Обмен переданных значений.

1) Меняет местами значения a и b.

2) Обмен массивов a и b. В действительности вызывает std::swap_ranges(a, a + N, b).

Содержание

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

a, b значения, которые нужно поменять местами
Требования к типам
-
T должен соответствовать требованиям MoveAssignable и MoveConstructible.
-
T2 должен соответствовать требованиям Swappable.

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

(Нет)

[править]Исключения

1)
спецификация noexcept:  
noexcept(noexcept(

    std::is_nothrow_move_constructible<T>::value&&
    std::is_nothrow_move_assignable<T>::value

))
2)
спецификация noexcept:  
noexcept(noexcept(swap(*a, *b)))

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

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

2) Линейная от N

[править]Специализации

Допускаются пользовательские специализации и перегрузки алгоритма std::swap, но перегрузки, как правило, предпочтительнее, так как специализации шаблона функции не разрешены для шаблонов классов. Библиотека функций всегда использует предоставленные пользователем перегрузки при обмене, если они находятся при аргументно-зависимом поиске (в соответствии с концепцией Swappable).

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

Специализация алгоритма std::swap
(шаблон функции)[править]
Специализируется std::swap алгоритм
Оригинал:
specializes the std::swap algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)[править]
Специализируется std::swap алгоритм
Оригинал:
specializes the std::swap algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)[править]
Специализация алгоритма std::swap
(шаблон функции)[править]
Специализируется std::swap алгоритм
Оригинал:
specializes the std::swap algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)[править]
задаётся алгоритмом std::swap
(шаблон функции)[править]
специализированный для строк std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализированный std::swap алгоритм
(шаблон функции)[править]
Специализируется std::swap() алгоритм
Оригинал:
specializes the std::swap() algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)
Специализируется std::swap() алгоритм
Оригинал:
specializes the std::swap() algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)
Специализируется std::swap() алгоритм
Оригинал:
specializes the std::swap() algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)
Специализируется std::swap() алгоритм
Оригинал:
specializes the std::swap() algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)
Специализируется std::swap() алгоритм
Оригинал:
specializes the std::swap() algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)
Специализируется std::swap() алгоритм
Оригинал:
specializes the std::swap() algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)
Специализируется std::swap алгоритм
Оригинал:
specializes the std::swap algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)[править]
Специализируется std::swap алгоритм
Оригинал:
specializes the std::swap algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)[править]
Специализируется std::swap алгоритм
Оригинал:
specializes the std::swap algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)[править]
Специализируется std::swap() алгоритм
Оригинал:
specializes the std::swap() algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)
Специализируется std::swap() алгоритм
Оригинал:
specializes the std::swap() algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)
специализация алгоритма std::swap
(шаблон функции)[править]
Специализируется std::swap() алгоритм
Оригинал:
specializes the std::swap() algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)
Специализируется std::swap() алгоритм
Оригинал:
specializes the std::swap() algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)
Специализируется std::swap() алгоритм
Оригинал:
specializes the std::swap() algorithm
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции)

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

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

обмен элементов, на которые указывают итераторы
(шаблон функции)[править]
обмен элементов в двух диапазонах
(шаблон функции)[править]
close