std::swap
(до 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) std::is_nothrow_move_constructible<T>::value&&
std::is_nothrow_move_assignable<T>::value
[править]Сложность
1) Константная.
2) Линейная от N
[править]Специализации
Допускаются пользовательские специализации и перегрузки алгоритма std::swap, но перегрузки, как правило, предпочтительнее, так как специализации шаблона функции не разрешены для шаблонов классов. Библиотека функций всегда использует предоставленные пользователем перегрузки при обмене, если они находятся при аргументно-зависимом поиске (в соответствии с концепцией Swappable
).
Следующие перегрузки уже предусмотрены в стандартной библиотеке:
(C++11) | специализация алгоритма std::swap (шаблон функции) |
(C++11) | специализация алгоритма std::swap (шаблон функции) |
(C++11) | специализация алгоритма std::swap (шаблон функции) |
(C++11) | Специализация алгоритма std::swap (шаблон функции) |
(C++11) | специализация алгоритма std::swap (шаблон функции) |
(C++11) | задаётся алгоритмом std::swap (шаблон функции) |
специализация алгоритма std::swap (шаблон функции) | |
(C++11) | специализация алгоритма std::swap (шаблон функции) |
специализация алгоритма std::swap (шаблон функции) | |
(C++11) | специализация алгоритма 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 (шаблон функции) |
специализация алгоритма std::swap (шаблон функции) | |
(C++11) | специализация алгоритма 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. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции) | |
({{{1}}}) | специализация алгоритма 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. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции) |
[править]Пример
vector <int> x;
x.push_back(228);
x.push_back(1337);
swap(x[0], x[1]);
cout<<x[0]<<' '<<x[1];
vector <int> x;
x.push_back(228);
x.push_back(1337);
int F;
F=x[0];
x[0]=x[1];
x[1]=F;
cout<<x[0]<<' '<<x[1];
[править]См. также
меняет местами элементы, на которые указывают два итератора (шаблон функции) | |
меняет местами два диапазона элементов (шаблон функции) |