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

std::swap(std::tuple)

Материал из cppreference.com
< cpp‎ | utility‎ | tuple
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм(C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования(C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
 
Определено в заголовочном файле <tuple>
(1)
template<class... Types>

void swap(std::tuple<Types...>& lhs,

           std::tuple<Types...>& rhs )noexcept(/* смотрите ниже */);
(начиная с C++11)
(до C++20)
template<class... Types>

constexprvoid swap(std::tuple<Types...>& lhs,

                     std::tuple<Types...>& rhs )noexcept(/* смотрите ниже */);
(начиная с C++20)
template<class... Types>

constexprvoid swap(conststd::tuple<Types...>& lhs,

                     conststd::tuple<Types...>& rhs )noexcept(/* смотрите ниже */);
(2) (начиная с C++23)

Меняет местами содержимое lhs и rhs. Эквивалентно lhs.swap(rhs).

1) Эта перегрузка участвует в разрешении перегрузки, только если std::is_swappable_v<Ti> равно true для всех i от 0 до sizeof...(Types).
2) Эта перегрузка участвует в разрешении перегрузки, только если std::is_swappable_v<const Ti> равно true для всех i от 0 до sizeof...(Types).
(начиная с C++17)

Содержание

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

lhs, rhs объекты tuple, содержимое которых нужно поменять местами

[править]Возвращаемое значение

(нет)

[править]Исключения

спецификация noexcept:  
noexcept(noexcept(lhs.swap(rhs)))

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

#include <iostream>#include <string>#include <tuple>   int main(){std::tuple<int, std::string, float> p1{42, "АБВГ", 2.71}, p2; p2 =std::make_tuple(10, "1234", 3.14);   auto print_p1_p2 =[&](auto rem){std::cout<< rem <<"p1 = {"<<std::get<0>(p1)<<", "<<std::get<1>(p1)<<", "<<std::get<2>(p1)<<"}, "<<"p2 = {"<<std::get<0>(p2)<<", "<<std::get<1>(p2)<<", "<<std::get<2>(p2)<<"}\n";};   print_p1_p2("Перед p1.swap(p2): "); p1.swap(p2); print_p1_p2("После p1.swap(p2): "); swap(p1, p2); print_p1_p2("После swap(p1, p2): ");}

Вывод:

Перед p1.swap(p2): p1 = {42, АБВГ, 2.71}, p2 = {10, 1234, 3.14} После p1.swap(p2): p1 = {10, 1234, 3.14}, p2 = {42, АБВГ, 2.71} После swap(p1, p2): p1 = {42, АБВГ, 2.71}, p2 = {10, 1234, 3.14}

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

меняет местами содержимое двух tuple
(public функция-элемент)[править]
специализация алгоритма std::swap
(шаблон функции)[править]
close