c++ - 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++ 还是很陌生,有人可以帮助我或给我一些线索吗?
非常感谢
凯西
解决方案
这是代码:
#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;
}
推荐阅读
- java - 如何决定在 maven 中使用哪个插件?
- javascript - 如何使用 Javascript 对来自 API 的项目应用掩码
- c# - 关于 Console.Write("{0,3}", i+1); 上 {} 中的输入
- python - 如何测试改变操作系统状态的 Python 模块
- ansible - 从 Ansible 调用 Netscaler CLI 命令
- java - 找不到 isbn 检查的符号
- html - 表交替彩色行。保留带有属性的表格行的样式,跳过其他 tr。最好由 CSS 完成
- docker - Docker hub 映像失败,但构建其 Dockerfile 工作。怎么了?
- java - 编写以枚举和字符串为参数的通用方法
- xml - 使用 XSLT1 有条件地显示来自 XML 的数据?