簡體   English   中英

數組初始化需要用大括號括起來的初始化器列表lambda

[英]array initialization requires a brace-enclosed initializer list lambda

我是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; });
//                    ^^^^

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM