2013-11-29 62 views
-1

刚开始学习CS106B,错误消息告诉我这三行错误。错误:预期的lambda表达式的身体..(什么是Lambda ???)

字符串键= aToken.substr “错误lambda表达式的预期体”([I],1);

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

else {myMap [aToken.substr([i],1)] + = 1};

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

Lambda表达式是表达式,通常采取的形式:

[capture list](parameters) {function body} 

当编译器注意到您的[i]预计,它的开始lambda表达式。没有理由在你的情况下用方括号把数字包起来。

Lambda表达式允许使用匿名类在线构建函子对象。参见:What is a lambda expression in C++11?