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 |