这就是代码的外观:
auto generateHash = [](std::vector<File> &files) -> std::shared_ptr<std::string> {
// Other code here
}
这是什么意思?它是针对每个循环的吗?一开始的括号是做什么的?括号做什么?箭头是什么意思?我无法编译它,因为没有C ++ 11编译器,我在C ++参考中找不到它。
答案 0 :(得分:4)
这是什么意思?
这是一个 lambda - 一个函数对象。你可以把它称为带有文件向量的函数(由于一些奇怪的原因通过可变引用传递),并且它返回一个字符串(由共享指针管理,出于某种奇怪的原因)。
std::vector<File> files = get_some_files();
std::shared_ptr<std::string> hash = generateHash(files); // call the lambda
每个循环都是一个吗?
没有。看起来像是
for (auto thing : sequence) {/* code */}
开头的括号有什么作用?
他们表示这是一个lambda。它们可以包含您希望为lambda中的代码提供的局部变量的捕获列表。
箭头意味着什么?
这是尾随返回类型。在C ++ 11中,如果需要,可以将该语法与普通函数一起使用;但这是指定lambda返回类型的唯一方法。
我在C ++参考资料中找不到它。
答案 1 :(得分:1)
这是lambda函数,参见例如http://en.cppreference.com/w/cpp/language/lambda
答案 2 :(得分:0)