C++ 中奇怪的方括号表示法,看起来有点像 foreach 循环

2024-04-14

代码如下所示:

auto generateHash = [](std::vector<File> &files) -> std::shared_ptr<std::string> {
    // Other code here
}

这是什么意思?是一个foreach循环吗?开头的括号有什么作用?括号有什么作用?箭头是什么意思?由于没有C++11编译器,我无法编译它,并且在C++参考中找不到它。


这是什么意思?

It's a lambda- 一个函数对象。您可以像调用带有文件向量的函数一样调用它(由于某种奇怪的原因,通过可变引用传递),并且它返回字符串(由于某种奇怪的原因由共享指针管理)。

std::vector<File> files = get_some_files();
std::shared_ptr<std::string> hash = generateHash(files); // call the lambda

是一个foreach循环吗?

不,看起来像

for (auto thing : sequence) {/* code */}

开头的括号有什么作用?

它们表示它是一个 lambda。它们可以包含捕获列表您想要供 lambda 内的代码使用的局部变量。

箭头是什么意思?

那是一个尾随返回类型。在 C++11 中,如果需要,您可以将该语法与普通函数一起使用;但这是指定 lambda 返回类型的唯一方法。

我在 C++ 参考中找不到它。

就在这里:http://en.cppreference.com/w/cpp/language/lambda http://en.cppreference.com/w/cpp/language/lambda

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中奇怪的方括号表示法,看起来有点像 foreach 循环 的相关文章

随机推荐