#include <iostream>
#include <string>
#include <tuple>
int main() {
std::tuple<int, double, std::string> tp;
tp = std::make_tuple(1, 3.14, "hi");
std::cout << std::get<0>(tp) << ", " << std::get<1>(tp) << ", "
<< std::get<2>(tp) << std::endl;
}
// 실행 결과
// 1, 3.14, hi
Structured binding c++ 17
#include <iostream>
#include <string>
#include <tuple>
std::tuple<int, std::string, bool> GetStudent(int id) {
if (id == 0) {
return std::make_tuple(30, "철수", true);
} else {
return std::make_tuple(28, "영희", false);
}
}
int main() {
auto student = GetStudent(1);
int age = std::get<0>(student);
std::string name = std::get<1>(student);
bool is_male = std::get<2>(student);
std::cout << "이름 : " << name << std::endl;
std::cout << "나이 : " << age << std::endl;
std::cout << "남자 ? " << std::boolalpha << is_male << std::endl;
}
// 실행 결과
// 이름 : 영희
// 나이 : 28
// 남자 ? false
모든 원소들이 포함 되어야한다.
auto& [age, name, is_male] = student;
각각 데이터형이 다른 세 개의 변수를 하나로 묶어서 할당 가능하다.
struct Data {
int i;
std::string s;
bool b;
};
Data d;
auto [i, s, b] = d;
아래와 같이 범위 기반 for문으로도 사용 가능하다
std::map<int, std::string> m = {{3, "hi"}, {5, "hello"}};
for (auto& [key, val] : m) {
std::cout << "Key : " << key << " value : " << val << std::endl;
}
출처 : C++ 기초 개념 17-5 : std::optional, variant, tuple (koreanfoodie.me)
'프로그래밍 언어 > C++' 카테고리의 다른 글
C 난수 생성 (0) | 2022.10.24 |
---|---|
C++ 데이터 타입(data type) (0) | 2022.10.23 |
std::variant와 std::monostate 여러가지 타입 중 한 가지의 객체를 보관 (0) | 2022.10.10 |
C extern (변수 / 함수 외부 선언) (0) | 2022.09.27 |
C++ auto 타입 추론 (0) | 2022.09.21 |