std::swap
Материал из cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Определено в заголовочном файле <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:  
2) noexcept(noexcept(
    std::is_nothrow_move_constructible<T>::value &&
    std::is_nothrow_move_assignable<T>::value
спецификация noexcept:  
noexcept(noexcept(swap(*a, *b)))
[править] Сложность
1) Константная.
2) Линейная от N
[править] Специализации
Допускаются пользовательские специализации и перегрузки алгоритма std::swap, но перегрузки, как правило, предпочтительнее, так как специализации шаблона функции не разрешены для шаблонов классов. Библиотека функций всегда использует предоставленные пользователем перегрузки при обмене, если они находятся при аргументно-зависимом поиске (в соответствии с концепцией Swappable).
Следующие перегрузки уже предусмотрены в стандартной библиотеке:
|    (C++11)  | 
   Специализация алгоритма std::swap   (шаблон функции)  | 
|    (C++11)  | 
    Специализируется std::swap алгоритм   Оригинал:  specializes the std::swap algorithm  Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции)  | 
|    (C++11)  | 
    Специализируется std::swap алгоритм   Оригинал:  specializes the std::swap algorithm  Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции)  | 
|    (C++11)  | 
   Специализация алгоритма std::swap   (шаблон функции)  | 
|    (C++11)  | 
    Специализируется std::swap алгоритм   Оригинал:  specializes the std::swap algorithm  Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции)  | 
|    (C++11)  | 
  задаётся алгоритмом 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 алгоритм   (шаблон функции)  | |
|    (C++11)  | 
    Специализируется   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. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции)  | |
|    (C++11)  | 
    Специализируется   std::swap() алгоритмОригинал:  specializes the  std::swap() algorithmТекст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции)  | 
|     Специализируется   std::swap() алгоритмОригинал:  specializes the  std::swap() algorithmТекст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции)  | |
|    (C++11)  | 
  специализация алгоритма std::swap  (шаблон функции)  | 
|    (C++11)  | 
    Специализируется   std::swap() алгоритмОригинал:  specializes the  std::swap() algorithmТекст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции)  | 
|    (C++11)  | 
    Специализируется   std::swap() алгоритмОригинал:  specializes the  std::swap() algorithmТекст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции)  | 
|     Специализируется   std::swap() алгоритмОригинал:  specializes the  std::swap() algorithmТекст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции)  | |
[править] Пример
| Этот раздел не завершён Причина: нет примера  | 
[править] См. также
|    обмен элементов, на которые указывают итераторы   (шаблон функции)  | |
|    обмен элементов в двух диапазонах   (шаблон функции)  | |