컨테이너 관련 사용 하다 보면, 한번은 반드시 루프를 돌려야 한다.
가령 stl일 경우 iterator에 begin() 값과 end() 값을 받아서 대입하고 하다 보면 생각 보다 길어질 수 밖에 없다.
그걸 간편히 해결하기 위해 boost의 BOOST_FOREACH라는 것이 있다.
동적할당, 가상함수, 함수 포인터도 호출 하지 않는다.
일반 루프 도는 것과 별반 차이도 없으면서 간단히 사용할 수 있는 BOOST_FOREACH 예제를 보자.
#include <stdio.h>
#include <boost/foreach.hpp>
void main()
{
std::vector<int> vecData;
vecData.push_back( 1 );
vecData.push_back( 2 );
vecData.push_back( 3 );
// BOOST_FOREACH
// nData : 루프를 돌고 반환 하는 데이터
// vecData : 컨테이너 데이터
BOOST_FOREACH( const int& nData, vecData )
{
printf( " vector : %d \n", nData );
}
}
주의 사항 : std::vector, std::list, std::set, 이상이 없으나, std::map은 컴파일이 안되니 참고 하시길.
참고 : http://blog.daum.net/aswip/8429376
'[ Programing ] > STL & Booster' 카테고리의 다른 글
STL 문자열 대소문자 변환 std::transform() (0) | 2011.05.27 |
---|---|
STL 컨테이너 차이점 (0) | 2011.05.27 |
[STL] 다중 정렬시 주로 사용 하는 stable_sort() (0) | 2010.08.24 |
[STL] Set, MultiSet (0) | 2010.08.06 |
[STL] Binary search ( qsort, bsearch ) (0) | 2010.06.29 |