所以这就是代码的样子:
auto generateHash = [](std::vector<File> &files) -> std::shared_ptr<std::string> {
// Other code here
}
Run Code Online (Sandbox Code Playgroud)
这是什么意思?它是每个循环吗?开头的括号有什么作用?括号有什么作用?箭头是什么意思?由于没有C++11编译器,我无法编译它,我在C++参考中也找不到它。
这是什么意思?
它是一个lambda - 一个函数对象。您可以将它称为具有文件向量的函数(由可变引用传递,出于某种奇怪的原因),并且它是一个返回字符串(由共享指针管理,出于某种奇怪的原因)。
std::vector<File> files = get_some_files();
std::shared_ptr<std::string> hash = generateHash(files); // call the lambda
Run Code Online (Sandbox Code Playgroud)
它是每个循环吗?
不,那看起来像
for (auto thing : sequence) {/* code */}
Run Code Online (Sandbox Code Playgroud)
开头的括号有什么作用?
它们表示它是一个 lambda。它们可以包含您想要提供给 lambda 内的代码的局部变量的捕获列表。
箭头是什么意思?
这是一个尾随返回类型。在 C++11 中,如果需要,您可以在普通函数中使用该语法;但这是指定 lambda 返回类型的唯一方法。
我在 C++ 参考中找不到它。
就在这里:http : //en.cppreference.com/w/cpp/language/lambda
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |