본문 바로가기
프로그래밍/C++

C++ ] std::pair 사용법

by eteo 2024. 3. 1.

 

 

C++에서 pair는 두 개의 값을 하나의 단위로 묶을 때 유용한 STL(Standard Template Library)의 일부이다. pair를 사용하면 문자열과 정수, 정수와 정수 등 다양한 데이터 타입의 두 값을 쌍으로 묶어 쉽게 관리할 수 있다.

 

 

 

 

 

1. std::pair 사용을 위한 헤더 포함

#include <utility>

 

std::pair는 utility 헤더를 포함시키면 사용할 수 있지만 이미 vector나 map, algorithm 같이 자주쓰는 헤더에 utility 헤더가 포함되어 있기 때문에 별도로 utility 헤더를 포함시키지 않아도 쓸 수 있는 경우가 많다.

 

 

 

2. pair 생성하고 요소에 접근하기

#include <iostream>
#include <utility>
#include <string>

using namespace std;

int main() {
    pair<int, string> myPair;

    myPair.first = 1; // 첫 번째 요소에 접근
    myPair.second = "첫 번째"; // 두 번째 요소에 접근

    cout << myPair.first << ", " << myPair.second << endl;

    return 0;
}

 

 

 

3. make_pair 함수 사용하기

make_pair 함수는 두개의 파라미터를 묶은 pair를 만두는 함수로 변수를 초기화하거나 값을 대입할 때 유용하게 사용할 수 있다.

#include <iostream>
#include <utility>

using namespace std;

int main() {
    auto myPair = make_pair(1, "첫 번째");

    cout << myPair.first << ", " << myPair.second << endl;

    return 0;
}

 

 

 

 

4. pair를 사용해서 함수에서 두 값을 반환하는 예시

#include <iostream>
#include <utility>

using namespace std;

pair<int, double> calculate(int a, int b) {
    int sum = a + b;
    double avg = (a + b) / 2.0;

    return make_pair(sum, avg);
}

int main() {
    auto result = calculate(5, 10);

    cout << "합계: " << result.first << ", 평균: " << result.second << endl;

    return 0;
}

 

 

 

 

5. map 컨테이너에서 사용되는 예시

 

map 컨테이너는 key와 value 쌍으로 std::pair 객체로 저장되는 것으로 내부 구조는 균형 이진트리를 기반으로 한다.

 

한편 pair 객체를 추가할 때 make_pair 함수를 사용할 수도 있지만 중괄호를 사용해 초기화하는 방법도 있다.

 

#include <iostream>
#include <map>
#include <string>

using namespace std;

int main() {
    map<std::string, int> myMap;

    // 요소 추가
    myMap.insert(make_pair("첫 번째", 1));
    myMap.insert({"두 번째", 2});
    myMap["세 번째"] = 3;

    // 요소 접근
    for (const auto& elem : myMap) {
        cout << elem.first << " => " << elem.second << endl;
    }

    return 0;
}