首页 > 解决方案 > Xcode .cpp 代码使用 lambda 表达式出错

问题描述

这些天我在学习 C++,在 Mac/XCode 中运行代码,今天在做 lambda 表达式时,我的 D7_Listing7_12.cpp 文件不断出错

D7_Listing7_12.cpp:17:14: error: expected expression
             [](int Element) {cout << Element << " " << endl;});
             ^
D7_Listing7_12.cpp:33:11: error: expected expression
          [](int Num1, int Num2) {return (Num2 < Num1); } );
          ^

以下是我如何定义这两个 lambda 输入:

  for_each(dynArr.begin(), dynArr.end(),\
             [](int Element) {cout << Element << " ";});

sort (myNums.begin(), myNums.end(),
          [](int Num1, int Num2) {return (Num2 < Num1); } );

我尝试在网上搜索很多答案,有人说这是 mac Xcode clang 的问题,因为它没有使用 C++ 11,但其他一些人说大多数当前的 Xcode 将默认使用 C++11 运行。所以我现在很困惑:(

我也在我的终端中运行了这个:

llvm-gcc --version

结果如下:

Apple LLVM version 10.0.0 (clang-1000.10.44.4)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

我对 Xcode 和 C++ 还是很陌生,有人可以帮助我或给我一些线索吗?

非常感谢

凯西

标签: c++xcodelambda

解决方案


这是代码:

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

void DisplayNum(vector<int>& dynArr){
    for_each(dynArr.begin(), dynArr.end(),\
             [](int Element) {cout << Element << " ";});

    cout << endl;
}

int main(){
    vector<int> myNums;
    myNums.push_back(500);
    myNums.push_back(50);
    myNums.push_back(-10);
    myNums.push_back(1);

    DisplayNum(myNums);

    cout << "Sorting them in descending order :" << endl;
    sort (myNums.begin(), myNums.end(),
          [](int Num1, int Num2) {return (Num2 < Num1); } );

    DisplayNum(myNums);
    return 0;
}

推荐阅读