프로그래밍/STL
2가지 변수를 저장하는 pair
리뷰하는 (게임)프로그래머_리프TV
2010. 4. 4. 18:44
음, 특별히 어려운것은 없다.
하나의 변수형(2가지를 저장하는)이라고 보면 쉽게 이해가 가능,
#include <iostream>
#include <string>
#include <utility> // pair 사용시 필요한 해더
// pair 선언
std::pair< std::string,int >
Max(std::pair< std::string,int > pair1, std::pair< std::string ,int > pair2)
{
return pair1 > pair2 ? pair1 : pair2;
}
std::pair< std::string ,int >
Sum(std::pair< std::string,int >pair1, std::pair< std::string,int >pair2)
{
// 임시 객체 생성과 비슷하다.
// 만든 후 바로 소멸,
// 그래서 복사를 통해서 retrun해주어야 한다.
return make_pair(pair1.first+pair2.first, pair1.second+pair2.second);
}
std::pair< std::string, int >
Change(std::pair< std::string,int >pair1, std::pair< std::string, int >pair2)
{
return make_pair(pair1.first, pair2.second);
}
void main()
{
// 2가지 변수를 가지고 있는 pair
// 예제에서는 string과 int 2가지를 가지고 있다.
std::pair< std::string, int> pair1("pair",20 );
std::pair< std::string, int> pair2("pairpair", 10);
std::pair< std::string, int>pair3 = Max(pair1, pair2);
std::cout << pair3.first << std::endl;
std::cout << pair3.second << std::endl;
pair3 = Sum(pair1, pair2);
std::cout << pair3.first << std::endl;
std::cout << pair3.second << std::endl;
pair3 = Change( pair1, pair2 );
std::cout << pair3.first << std::endl;
std::cout << pair3.second << std::endl;
}
// 결과
// pairpair
// 10
// pairpairpair
// 30
// pair
// 10
pair의 첫번째 변수에 접근할 때는
pair.first;
두번째 변수에 접근할 때는
pair.second;
를 해주면 된다. 소스를 보면 너무 복잡하게 보일지도 모르지만,
using namespace std;
를 선언하고,
typedef pair< string, int > PAIR
를 사용해 주면 훨씬 간결하게 표현 할 수 있다.
PAIR pair1("pair",20); // 두 표현 다 문제없게 된다.
std::pair< std::string, int> pair1("pair",20 );