簡體   English   中英

VS 代碼中的 Lambda 表達式 C++ 出錯

[英]Error with Lambda Expression C++ in VS Code

我正在嘗試使用 lambda 表達式對 class measure的數組m進行排序,如下所示:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <math.h>

using namespace std;

struct measure{
    int day;
    int cow;
    int change;
};


int main()
{

    int N;
    cin >> N;

    measure m[N];

    for (int i = 0; i < N; i++){
        measure m_i;
        cin >> m_i.day >> m_i.cow >> m_i.change;
        m[i] = m_i;
    }

    sort(m, m + N, [](measure a, measure b) {return a.day < b.day;});
}

但是,嘗試在 VS Code(使用 C++17)中構建任務時出現錯誤:

錯誤:預期的表達式

sort(m, m + N, [](measure a, measure b) {return a.day < b.day;}); ^

產生 1 個錯誤。

構建完成但出現錯誤。

我已經在其他編譯器上毫無困難地測試了這段代碼。 為什么在 VS Code 上會發生此錯誤?

好的,所以看起來您不是在使用 c++17 進行編譯。 如果我將gcc版本回滾到4.x並將標准留給編譯器,我可以重現此錯誤。 是它在舊編譯器上的外觀。 以下是它如何在較新的編譯器上正常運行。 很可能您使用的是c++98c++03類的東西。

注意- 我冒昧地修改了您的代碼,使其更加 C++。 另外,請停止using namespace std

您確實需要檢查您使用的 Visual Studio 版本以及 VC 構建工具是否已更新。 如果您說您使用的是 c++ 17 那么您的 vc++ 編譯器應該是 @ 14.x 有多種方法可以檢查這一點,我相信你可以自己找到。

一個簡單的解決方法是確保您使用正確版本的編譯器基於您需要的功能。 C++11 中引入了 C++ 中的 Lambda,因此顯然您使用的是版本低得多的編譯器。

暫無
暫無

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

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