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

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.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

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

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

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

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