c++에는 tuple을 만들어 주는 tie가 존재합니다. tie는 값들의 tuple을 생성하여 참조를 반환합니다.
구조적 바인딩에서 auto는 컴파일러가 오른쪽 표현식의 타입에 따라 왼쪽 변수들의 타입을 추론합니다.
따라서 auto [a, b, c] = tie(x, y, z) 같은 형식으로 값을 대입하면 a, b, c는 auto에 의해 참조자 형태가 됩니다.
#include <bits/stdc++.h>
using namespace std;
int main()
{
int x = 1, y = 2, z = 3;
auto [a, b, c] = tie(x, y, z);
x = 5;
cout << a << ' ' << b << ' ' << c << '\n';
}
출력 : 5 2 3
따라서 tuple을 생성해 값을 반환하는 make_tuple을 이용하면 값을 할당받게 됩니다.
#include <bits/stdc++.h>
using namespace std;
int main()
{
int x = 1, y = 2, z = 3;
auto [a, b, c] = make_tuple(x, y, z);
x = 5;
cout << a << ' ' << b << ' ' << c << '\n';
}
출력 : 1 2 3
'알고리즘 > C++' 카테고리의 다른 글
[C++] vector에서의 회전 (2) | 2024.07.21 |
---|---|
[C++] 메모리 제한 (2) | 2024.05.22 |
[C++] vector에서의 unique를 이용한 중복 제거 (0) | 2022.07.23 |
[C++] vector size 주의사항 (2) | 2022.07.04 |
[C++] 자료형의 범위 (2) | 2022.06.22 |