본문 바로가기
프로그래밍/STL

2가지 변수를 저장하는 pair

by 리뷰하는 (게임)프로그래머_리프TV 2010. 4. 4.



음, 특별히 어려운것은 없다.
하나의 변수형(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