BOOST의 ForEach와 사용자 정의 #define 매크로를 사용하여 컨테이너를 반복하는 것의 차이점은 무엇입니까 ??C++ BOOST ForEach 대 사용자 정의 매크로
내 :
#define iterate(i,x) for(typeof(x.begin()) i=x.begin();i!=x.end();++i)
boost:
#include <string>
#include <iostream>
#include <boost/foreach.hpp>
int main()
{
std::string hello("Hello, world!");
BOOST_FOREACH(char ch, hello)
{
std::cout << ch;
}
return 0;
}
어떤 방법이 더 나은 이유를 설명하세요?
Boost는 비표준 typeof 확장자가없는 컴파일러에서 실행되도록 코드를 구성했을 가능성이 큽니다. –
한가지 차이점은'BOOST_FOREACH'는 일반 배열, 즉'char a [] = { "Hello, world!"};'에서 작동한다는 것입니다. –
'typeof'에 의지해서는 안되며, 표준 C++가 아닙니다. 당신은'decltype'을 사용해야합니다 –