这句话有什么影响:
std::replace_if(ln.begin(),ln.end(),[=](int c){return c=='\n'||c==' ';},0);
具体来说,我想知道:
的含义是什么
[=](int c){return c=='\n'||c==' ';}
这个定义的语法在哪里?
答案 0 :(得分:2)
[=](int c){return c =='\ n'|| c =='';}
是一个lambda表达式,用于创建未命名的函数对象。它可以用一个参数调用并返回一个布尔值。方括号是所谓的“lambda导入器”,其中包含所谓的“捕获子句”。 capture-clause告诉编译器lambda对象如何捕获周围的局部变量。
std :: replace_if(ln.begin(),ln.end(),[=](int c){return c =='\ n'|| c =='';},0); < / p>
replace_if为序列,仿函数(更具体地说:谓词)和其他一些值采用两个迭代器。它遍历名为ln
的序列的元素,如果给定的谓词(lambda表达式)为该元素返回true,则将每个元素替换为0。
因此,基本上,这行代码将使用空终止符替换ln
中的每个空格和换行符。
答案 1 :(得分:1)
这是一个lambda函数。一个没有名称且在代码中内联定义的函数。它已被C ++ 11标准添加到C ++中。所以,这是相对较新的。
您可以阅读here
答案 2 :(得分:1)
这是一个lambda。如果c
或ln
,它会将容器0
中的整数c == '\n'
替换为c == ' '
。由于容器似乎包含字符,因此基本上可以说它用空终止字符替换空格和换行符。