반응형
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;
}
반응형
'Programming Language > C++11' 카테고리의 다른 글
[c++11] std::pair - 두 개의 변수나 객체를 한번에 전달 (0) | 2024.07.02 |
---|---|
[c++11] Lambda Function (람다 함수) - 익명 함수 (10) | 2024.06.26 |
[c++11] std::function - 함수 포인터를 대체하는 키워드 (9) | 2024.06.25 |
[c++11] Smart Pointer (std::unique_ptr, std::shared_ptr) (21) | 2024.06.24 |
[c++11] std::atomic - 원자성을 보장해야 할 변수 정의 (26) | 2024.06.21 |