Programming Language/C++11
[c++11] std::tuple - 두 개 이상의 변수나 객체를 한번에 전달
희야남푠
2024. 7. 2. 13:35
반응형
std::tuple은 두 개 이상의 변수나 객체를 하나로 묶어 전달 할 때 사용된다.
1. 사용법
#include <tuple>
std::tuple< var-type1, ..., var-typeN > var;
(1) 인자
1-1) var-type : 변수나 객체의 타입을 지정
2. 사용 예제
#include <iostream>
#include <vector>
#include <tuple>
// 이름, 나이, 키
using Type = std::tuple<std::string,int,float>;
void print(const Type& param)
{
// std::get을 사용하여 값에 접근
std::cout << "Name:" << std::get<0>(param) << ", Age:" << std::get<1>(param)
<< ", Height:" << std::get<2>(param) << std::endl;
}
int main()
{
// 선언과 함께 값 추가
std::tuple<std::string,int,float> t1{"name1", 10, 164.2};
print(t1);
// std::make_tuple을 사용하여 값 추가
Type t2{std::make_tuple<std::string,int,float>("name2", 20, 183.2)};
print(t2);
// tuple 사이즈 알아오기
std::cout << "tuple size: " << std::tuple_size<Type>() << std::endl;
// auto를 사용하여 값에 접근
auto& [name, age, height] = t1;
std::cout << "Name:" << name << ", Age:" << age << ", Height:" << height << std::endl;
// std::tie를 사용하여 값에 접근
std::string n{};
int a{0};
float h{0.0f};
std::tie(n, a, h) = t2;
std::cout << "Name:" << n << ", Age:" << a << ", Height:" << h << std::endl;
// 벡터와 함께 사용
std::vector<Type> vTuple;
vTuple.emplace_back(t1);
vTuple.emplace_back(t2);
vTuple.emplace_back(std::make_tuple<std::string,int,float>("name3", 30, 172.2));
vTuple.emplace_back(Type("name4", 40, 166.7));
for (const Type& v : vTuple) print(v);
return 0;
}
반응형