2013-02-27 128 views

回答

1

这是一个lambda函数。一个没有名字并在代码中内联定义的函数。它已被C++ 11标准添加到C++中。所以,这是相对较新的。

你可以阅读他们here

1

这是一个拉姆达。它将容器ln中的整数c替换为0,如果c == '\n'c == ' '。由于容器似乎拥有字符,因此基本上可以说它用空字符替换空格和换行符。

2

[=](INT C){回复C == '\ n' ||ç==”“;}

是创建一个未命名的函数对象lambda表达式。它可以用一个参数调用并返回一个布尔值。方括号是所谓的“lambda介绍人”,其中包含所谓的“捕获条款”。 capture-clause告诉编译器lambda对象如何捕获周围的局部变量。

std :: replace_if(ln.begin(),ln.end(),[=](int c){return c =='\ n'|| c =='';},0 );

replace_if为一个序列,一个函数(更具体地说:一个谓词)和一些其他值需要两个迭代器。它迭代名为ln的序列的元素,并且如果给定谓词(lambda表达式)为该元素返回true,则用0替换每个元素。

因此,基本上,这行代码将用空终止符替换ln中的每个空格和换行符。