블로그는 나의 힘!

컨테이너 관련 사용 하다 보면, 한번은 반드시 루프를 돌려야 한다.
가령 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

Posted by Mister_Q