2013-11-29 3 views
-1

그냥 CS106B를 배우기 시작합니다. 오류 메시지가 나에게이 3 줄에 문제가 있음을 알립니다.오류 : 람다 표현의 예상 몸 .. (람다 무엇입니까?)

:

문자열 키 aToken.substr = "오류 람다 식 예상 바디"([I], 1);

myMap.put (aToken.substr ([i], 1), 1);

else {myMap [aToken.substr ([i], 1)] + = 1}; 컴파일러가 [i]를 통지 할 때

[capture list](parameters) {function body} 

는 그것이 람다 식의 시작에 불과 것으로 예상 :

int main() { 

TokenScanner myTK; 
myTK.setInput("Sven is Pro Moo Noob <naja>"); 
myTK.ignoreWhitespace(); 
Map <string ,int> myMap; 
while(myTK.hasMoreTokens()){ 
    string aToken = myTK.nextToken(); 
    for(int i=0;i<= int(aToken.size());i++){ 
     string key = aToken.substr([i],1); 
     if(!myMap.containsKey(key)){ 
       myMap.put(aToken.substr([i],1),1); 
     } 
     else {myMap[aToken.substr([i],1)] +=1}; 
    } 
    cout << aToken << endl; 
} 
cout<< myMap.toString() << endl; 
return 0; 
}; 

답변

0

람다 표현은 일반적으로 형태를 취 표현이다. 귀하의 경우 대괄호 안에 숫자를 싸야 할 이유가 없습니다.

람다 식을 사용하면 익명 클래스가있는 Functor 개체를 인라인으로 구성 할 수 있습니다. 참고 : What is a lambda expression in C++11?