2010-08-21 4 views
3

GCC의 각 루프에 어떻게 사용할 수 있습니까?GCC 및 GCC 버전

어떻게 GCC 버전을 구할 수 있습니까? (코드)

+3

두 질문 사이에 어떤 관계도 보이지 않습니다 ... – kennytm

+0

'g ++'또는'gcc'를 의미합니까? – alternative

답변

20

람다, 예 :

// C++0x only. 
std::for_each(theContainer.begin(), theContainer.end(), [](someType x) { 
    // do stuff with x. 
}); 

range-based for loop은 4.6 이후 GCC에서 지원됩니다.

// C++0x only 
for (auto x : theContainer) { 
    // do stuff with x. 
} 

"for each" loop 구문은 MSVC 확장입니다. 다른 컴파일러에서는 사용할 수 없습니다.

// MSVC only 
for each (auto x in theContainer) { 
    // do stuff with x. 
} 

하지만 Boost.Foreach 만 사용할 수 있습니다. C++ 0x도없이 이식 가능합니다.

// Requires Boost 
BOOST_FOREACH(someType x, theContainer) { 
    // do stuff with x. 
} 

는 GCC 버전을 얻는 방법에 How do I test the current version of GCC ?를 참조하십시오.

+0

아니요, (C++ 0x 형식) VC++ 2010과 같은 : 각 (vec 자동) { cout << it << endl; } – user335870

+1

@user :'for each'는 C++ 0x가 아닙니다. – kennytm

+1

'for each' C++ cli입니까? 아니면 원시 C++을 확장 한 것입니까? –

6

또한 C++ 0X 람다를 사용하지 않는 전통적 방식이 있습니다. <algorithm> 헤더는 정의 된 연산자 괄호가있는 개체와 함께 사용하도록 설계되었습니다. (C++ 0X 람다 단지 운전자가 물체의 서브 세트이다())

struct Functor 
{ 
    void operator()(MyType& object) 
    { 
     // what you want to do on objects 
    } 
} 

void Foo(std::vector<MyType>& vector) 
{ 
    Functor functor; 
    std::for_each(vector.begin(), vector.end(), functor); 
} 

는 모든 C++에서 펑하고 람다 작업 표준 기능 algorithm header reference 참조.