음, 특별히 어려운것은 없다.
하나의 변수형(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 );
'프로그래밍 > STL' 카테고리의 다른 글
iterator - 반복자 (0) | 2010.04.08 |
---|---|
시퀀스 컨테이너 - vector, list, deque (0) | 2010.04.05 |
용어적 설명. (0) | 2010.04.05 |
numeric_limits. (0) | 2010.04.02 |
auto_ptr의 개념. (0) | 2010.04.02 |