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. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции) | |
[править] Пример
| Этот раздел не завершён Причина: нет примера |
[править] См. также
| обмен элементов, на которые указывают итераторы (шаблон функции) | |
| обмен элементов в двух диапазонах (шаблон функции) | |