블로그는 나의 힘!

std::pair< template T1, template T2 > 이란?

하나의 컨터이너에 2가지 변수가 묶여 있는것. ( = typelist )

pair<T1, pair<T2, T3> > 방법으로 3가지 이상 활용 가능하다.





활용 : std::set<template T>의 중복 데이터 삽입 여부 체크.

int main( int argc, char *argv[] )

      std::set<int> setNum;
      std::pair<std::set<int>::iterator, bool> pairSet;
 
      pairSet = setNum.insert( 1 );
 
      if( !pairSet.second )
            printf( "1. Failed. duplication (%d) : (%d) \n", *(pairSet.first), pairSet.second );
 
      pairSet = setNum.insert( 1 );

      if( !pairSet.second )
            printf( "2. Failed. duplication (%d) : (%d) \n", *(pairSet.first), pairSet.second );
 
      return EXIT_SUCCESS;
}


// 출력
// 2. Failed. duplication ( 1 ) : ( 0 )





2번째 setNum.insert(1) 할때
이미 이전에 1을 삽입하여 넣었기에 std::set은 std::set<int>::iterator 해당 데이터 값과 bool 참/거짓을 리턴한다.

bool 값이 false라면 중복 여부 라는 것이니 second 값을 조건 처리 활용하면 된다.

 

 

----------------------------------------------------------

추가로 map insert()에도 사용 가능하다. map 도 중복 체크를 하는데 중복시 Bool을 반환한다.

map의 insert 함수의 리턴값은  pair<iterator, bool> 이라고 한다.

iterator는 추가된 항목이고 bool은 성공 유무를 나타낸다.

 

source code::

 if(m_map.insert(p).second == false)
          return false;

 

'[ Programing ] > STL & Booster' 카테고리의 다른 글

[STL] list 옵션 sort()  (0) 2011.10.10
[STL] member map  (0) 2011.07.20
STL 문자열 대소문자 변환 std::transform()  (0) 2011.05.27
STL 컨테이너 차이점  (0) 2011.05.27
[BOOST] BOOST_FOREACH  (0) 2010.08.30
Posted by Mister_Q