std::pair 는 하나의 변수에 두개의 데이터 타입을 저장할떄 사용한다.
기본적인 형식은 아래와 같다.
std::pair<타입1, 타입2> 변수명{타입 1 값, 타입2 값};
하지만 변수 선언으로만 사용하기엔 뭔가 부족해 보인다. 그렇다면 어떤게 좋을까? 예전에 값을 리턴할때 두가지 형식을 한번에 리턴하면 좋겠다는 생각이 든 적이 있다.
현재 함수가 올바르게 동작된지 확인가능한 boolean 과 함수의 결과값을 동시에 ..
다른 방식으로도 가능한 방법은 많다 하지만 그때는 이 방식이 있으면 좋지 않을까 생각했고 그방식을 std::pair로 구현할 수 있다.
//answer, Errorcode
std::pair<int, int> TestDivide(int a, int b)
{
if(b == 0)
return std::make_pair<int, int>(a/ b, -1);
return std::make_pair<int, int>(a / b, 0);
}
int main()
{
auto pair_test = TestDivide(5, 2);
//호출 형식
std::cout << pair_test.first << std::endl;
std::cout << pair_test.second << std::endl;
}
std::tuple은 std::pair와 비슷하지만 여러개의 인자를 설정할수 있고 변수로도 선언 할수 있고 그것을 리턴 받는 식으로 사용할수 있다.
std::tuple<int, int, int> get_content()
{
return std::make_tuple(0, 0, 1);
}
하지만 받는 형식은 여러가지가 있다.
int main(
auto auto_tuple = get_content();
std::cout << std::get<0>(auto_tuple) << std::endl;
std::cout << std::get<1>(auto_tuple) << std::endl;
std::cout << std::get<2>(auto_tuple) << std::endl;
int nInt1, nInt2, nInt3;
std::tie(nInt1, nInt2, nInt3) = get_content();
//C++17
auto [nNum1, nNum2, nNum3] = get_content();
return 0;
}
모든 방식이 되지만 개인적으로 실전에서 사용은 안해서 뭐가 좋을지는 아직 모르겠다.
'C++ > C++11' 카테고리의 다른 글
C++ 11 특징 ( R Value) (0) | 2021.03.09 |
---|---|
C++11 특징 (Uniform 초기화) (0) | 2021.03.05 |
C++11 특징 (lambda) (0) | 2021.03.03 |
C++11 특징( ranged for loop) (0) | 2021.03.03 |
C++11 특징 (auto) (0) | 2021.03.02 |