C++에서 람다 식을 사용하는 방법을 배우려고합니다. C++에서 람다 식과 auto 키워드를 사용하는 데 문제가 있습니다
나는 코드의 간단한 비트를 시도했지만 나는 오류를 컴파일 얻을 :int main()
{
vector<int> vec;
for(int i = 1; i<10; i++)
{
vec.push_back(i);
}
for_each(vec.begin(),vec.end(),[](int n){cout << n << " ";});
cout << endl;
}
오류 : 나는 또한 람다 식을 자동 변수를 만드는 시도
forEachTests.cpp:20:61: error: no matching function for call to'for_each(std::vector<int>::iterator, std::vector<int>::iterator, main()::<lambda(int)>)'
forEachTests.cpp:20:61: note: candidate is:
c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:4373:5: note:template<class _IIter, class _Funct> _Funct std::for_each(_IIter, _IIter, _Funct)
하지만 난의 다른 세트를 가지고 오류.
int main()
{
vector<int> vec;
for(int i = 1; i<10; i++)
{
vec.push_back(i);
}
auto print = [](int n){cout << n << " ";};
for_each(vec.begin(),vec.end(),print);
cout << endl;
}
이
나에게 다음과 같은 오류가 준 :forEachTests.cpp: In function 'int main()':
forEachTests.cpp:20:7: error: 'print' does not name a type
forEachTests.cpp:22:33: error: 'print' was not declared in this scope
나는이 내 컴파일러에 문제가 있지만 내가 꽤 잘 모르겠습니다 있으리라 믿고있어 여기
는 코드입니다. 방금 MinGW를 설치했는데gcc
4.6.2를 사용하고있는 것으로 보입니다.
이것은 컴파일러와 관련이있을 수 있습니다. 이것은 ideone에서 잘 컴파일됩니다 : http://ideone.com/gcQEG – templatetypedef
컴파일 할 때'-std' 플래그를 지정 했습니까? – nhahtdh
이제 자동이 -std = C++ 0x와 함께 작동하는 것처럼 보입니다. 컴파일 할 때 나에게 경고 메시지를 보내고 있지만 기본적으로 활성화되어 있다고 말했습니다. 나는 그것이 디폴트에 대해 거짓말했다고 생각한다. 첫 번째 예제 코드가 지금 작동하는지 확인하겠다. –