상세 컨텐츠

본문 제목

[C++] pair, make_pair [예제 소스]

C, C++

by oksk2003kr 2019. 11. 12. 16:01

본문

반응형


오직 두 객체(세개 이상 X )를 하나의 객체로 취급 할 수 있게 묶어주는 클래스
#include <utility> 포함

- 선언 방법
pair < type1,type2 > A
데이터 type1,2를 넣을 수 있는 Pair클래스 A를 만듬
    1) 방법 1 : 선언과 함께 초기화
        pair <int,string>var1 = make_pair(30,"test");   
    2) 방법 2 : 선언 후 할당
        pair <int,int> var2;
        var2 = make_pair(30,40);
    3) 방법 3 : 방법1 + Auto활용
        auto var3 = make_pair(30,40);

- 사용 방법
A.first : A의 type1의 정보를 반환
A.second : A의 type 2의 정보를 반환
make_pair(type1,type2); : type1,2 넣은 Pair 클래스를 반환

 

 

#include  <iostream>
#include  <utility>// std::Pair

using namespace std;

int pair_print_int(pair<int,int> &pPair)
{
// 사용 방법 - 2
cout<<"<int,int> &pPair"<<endl;
cout<<"first : "<<pPair.first<<endl;
cout<<"second : "<<pPair.second<<endl;
return 0;
}

 

int pair_print_str(pair<int,string> &pPair)
{
cout<<"pair<int,string>"<<endl;
cout<<"first : "<<pPair.first<<endl;
//string a = pPair.second;
//a.c_str()
cout<<"second : "<<(pPair.second).c_str()<<endl;
return 0;
}

int pair_print_pchar(pair<int,const char*> &pPair)
{
cout<<"pair<int,string>"<<endl;
cout<<"first : "<<pPair.first<<endl;
//string a = pPair.second;
//a.c_str()
cout<<"second : "<<pPair.second<<endl;

pPair.second = "1";
cout<<"second : "<<pPair.second<<endl;

return 0;
}

 

int main()
{
cout<<"************1************"<<endl;
// 선언 방법 - 1
pair <int,string>var1 = make_pair(30,"test"); 
//auto var = make_pair(30,"test",1); //2개 인자만 가능
//pair_print_str(var1);

cout<<"************2************"<<endl;
// 선언 방법 - 2
pair <int,int> var2;
var2 = make_pair(30,40);
//pair_print_int(var2);

// 사용 방법 - 1
cout<<"get<0> : "<<get<0>(var2)<<"get<1> : "<<get<1>(var2)<<endl;
cout<<"************3************"<<endl;

// 선언 방법 - 3
auto var3 = make_pair(30,40);
pair_print_int(var3);

cout<<"************4************"<<endl;
// 선언 방법 - 4
pair <int,int> var5;
var5.first = 1;
var5.second = 2;
pair_print_int(var5);

 

return 0; cout<<"************1************"<<endl;
// 선언 방법 - 1
pair <int,string>var1 = make_pair(30,"test"); 
//auto var = make_pair(30,"test",1); //2개 인자만 가능
//pair_print_str(var1);

cout<<"************2************"<<endl;
// 선언 방법 - 2
pair <int,int> var2;
var2 = make_pair(30,40);
//pair_print_int(var2);

// 사용 방법 - 1
cout<<"get<0> : "<<get<0>(var2)<<"get<1> : "<<get<1>(var2)<<endl;
cout<<"************3************"<<endl;

// 선언 방법 - 3
auto var3 = make_pair(30,40);
pair_print_int(var3);

cout<<"************4************"<<endl;
// 선언 방법 - 4
pair <int,int> var4;
var4.first = 1;
var4.second = 2;
pair_print_int(var4);

cout<<"************5************"<<endl;
auto var5 = make_pair(30,"abc");
//pair_print_str(var5);
//IntelliSense: "std::pair<int, std::string> &" 형식(const 한정 형식 아님)의 참조를 "std::pair<int, char *>" 형식의 값으로 초기화할 수 없습니다.
cout<<"get<0> : "<<get<0>(var5)<<"get<1> : "<<get<1>(var5)<<endl;

cout<<"************6************"<<endl;
pair<int,const char*> var6 = make_pair(30,"abc");
pair_print_pchar(var6);
}

 

참고자료 : https://blockdmask.tistory.com/64

반응형

관련글 더보기

댓글 영역