본문 바로가기

C

c++ tuple, pair

tuple, pair 대신에 struct로 정의하는 것이 올바르다.

하지만 임시적으로 해당 기능을 잠깐 사용하고자 한다면 tuple이나 pair를 고려해 보자.

 

코드 >>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <tuple>
#include <string>
 
//pair나 tuple 보다는 struct를 만드는 것이 맞다.
// 하지만 임시적으로 쓰인다면 pair나 tuple을 고려해 보자
 
 
std::pair<intint> divide(int a, int b)
{
    if (b == 0)
    {
        return { 0,-1 };
    }
    return { a / b,0 };
}
 
std::tuple<doublecharstd::string> get_student()
{
    return std::make_tuple(3.8'A'"Lisa Simpson");
}
 
int main()
{
    std::pair<intstd::string> numStr{ 1"nocope" };
    std::cout << numStr.first << std::endl;
    std::cout << numStr.second << std::endl;
    
    std::pair<intint> answer = divide(100);
    if (answer.second != 0)
    {
        std::cout << "no answer" << std::endl;
    }
 
    auto student1 = get_student();
    std::cout << "ID : 0, "
        << "GPA: " << std::get<0>(student1) << ", "
        << "grade: " << std::get<1>(student1) << ", "
        << "name: " << std::get<2>(student1) << '\n';
    
    
    double gpa1;
    char grade1;
    std::string name1;
     
 
    std::tie(gpa1, grade1, name1) = get_student();
    std::cout << "ID: 1, "
        << "GPA: " << gpa1 << ", "
        << "grade: " << grade1 << ", "
        << "name: " << name1 << '\n';
    
    // C++17 style
    auto [gpa2, grade2, name2] = get_student();
    std::tie(gpa2, grade2, name2) = get_student();
    std::cout << "ID: 2, "
        << "GPA: " << gpa2 << ", "
        << "grade: " << grade2 << ", "
        << "name: " << name2 << '\n';
 
    auto student0 = get_student();
    std::cout << "ID: 2, "
        << "GPA: " << std::get<double>(student0) << ", "
        << "grade: " << std::get<char>(student0) << ", "
        << "name: " << std::get<std::string>(student0) << '\n';
    return 0;
}

 

'C' 카테고리의 다른 글

C++ enum class(매우 중요)  (0) 2021.06.28
c++ optional (C++17부터 지원)  (0) 2021.06.28
c++ float 조심할 점  (0) 2021.06.28
c++ stl heap 기록  (0) 2021.06.28
c++ priority_queue  (0) 2021.06.28