tuple_swap2
tuple_swap2 (std::tuple용 swap 함수)
이 페이지는 std::tuple 두 개의 내용을 서로 교환하는 비멤버 함수 템플릿 swap에 대해 설명해요. 이 함수는 lhs.swap(rhs)와 동일하게 동작하며, C++11부터 사용할 수 있어요. C++20부터는 constexpr로, C++23부터는 const 튜플에도 사용할 수 있어요.
출처: cppreference
본문
함수 선언
<tuple> 헤더에 정의됨 |
||
|---|---|---|
template < class ... Types > void swap ( std :: tuple < Types ... >& lhs , std :: tuple < Types ... >& rhs ) noexcept ( /* see below */ ); |
(1) | (C++11부터) (C++20까지) |
template < class ... Types > constexpr void swap ( std :: tuple < Types ... >& lhs , std :: tuple < Types ... >& rhs ) noexcept ( /* see below */ ); |
(C++20부터) | |
template < class ... Types > constexpr void swap ( const std :: tuple < Types ... >& lhs , const std :: tuple < Types ... >& rhs ) noexcept ( /* see below */ ); |
(2) | (C++23부터) |
lhs와 rhs의 내용을 교환해요. lhs.swap(rhs)와 동일해요.
1) 이 오버로드는 0부터 sizeof...(Types)까지의 모든 i에 대해 std::is_swappable_v<Ti>가 true인 경우에만 오버로드 해석에 참여해요. 2) 이 오버로드는 0부터 sizeof...(Types)까지의 모든 i에 대해 std::is_swappable_v<const Ti>가 true인 경우에만 오버로드 해석에 참여해요. |
(C++17부터) |
|---|
매개변수
| lhs, rhs | - | 내용을 교환할 튜플 |
|---|
반환값
(없음)
예외
noexcept(noexcept(lhs.swap(rhs)))
예제
#include <iostream>
#include <string>
#include <tuple>
int main()
{
std::tuple<int, std::string, float> p1{42, "ABCD", 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("Before p1.swap(p2): ");
p1.swap(p2);
print_p1_p2("After p1.swap(p2): ");
swap(p1, p2);
print_p1_p2("After swap(p1, p2): ");
}
출력:
Before p1.swap(p2): p1 = {42, ABCD, 2.71}, p2 = {10, 1234, 3.14}
After p1.swap(p2): p1 = {10, 1234, 3.14}, p2 = {42, ABCD, 2.71}
After swap(p1, p2): p1 = {42, ABCD, 2.71}, p2 = {10, 1234, 3.14}
같이 보기
swap |
두 tuple의 내용을 교환해요 (공개 멤버 함수) [edit] |
|---|---|
std::swap (std::pair) (C++11) |
std::swap 알고리즘을 특수화해요 (함수 템플릿) [edit] |