gpt4 book ai didi

c++ - 数组初始化需要一个大括号括起来的初始化列表 lambda

转载 作者:太空宇宙 更新时间:2023-11-04 15:35:46 24 4
gpt4 key购买 nike

我是 lambda 表达式的新手,有点困惑为什么我会在这里收到错误?

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int arr[] = { 11, 21, 4, 13 };

for_each(arr, arr + 4, [arr](int x) {
cout << x;
});
return 0;
}

我只是为这个函数添加了 LAMBDA。

void fun1(int x)
{
cout << x << " ";
}

这是 visual studio 上的错误信息。

'main::<lambda_4ee0815d3a456ed46cc70a2a94c10f76>::arr': 
array initialization requires a brace-enclosed initializer list Project1

最佳答案

你不能复制数组,所以如果你真的需要它,你可以通过引用捕获 arr:

for_each(arr, arr + 4, [&arr](int x) { cout << x; });
// ^^^

但是,由于您没有在 lambda 主体中引用数组,因此根本不需要捕获它:

for_each(arr, arr + 4, [](int x) { cout << x; });
// ^^^^

关于c++ - 数组初始化需要一个大括号括起来的初始化列表 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com