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