错误:期望lambda表达式的主体..(什么是Lambda???)

3

我刚开始学习CS106B,错误提示告诉我这三行代码出了问题:

" 错误: 预期 lambda 表达式体 "

string key = aToken.substr([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;
};
1个回答

2
Lambda表达式是一种通常具有如下形式的表达式:
[capture list](parameters) {function body}

当编译器注意到你的[i]时,它期望这是lambda表达式的开始。在你的情况下,没有必要用方括号包裹数字。

Lambda表达式允许使用匿名类在代码中构造函数对象。详情请参见:什么是C++11中的lambda表达式?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接