c++ 数据 进制:
数据分 字符型,数值型,bool。
数值型分 整型,浮点型。
数值可翻译为各种进制,10进制,16进制,2进制等,本质上都一样,计算机中的存储方式都是一样的。
c++ lambda学习
是C++ 11 新增特性,简而言之,Lambda 表达式就是用于创建匿名函数。
#include <iostream>
using namespace std;
int main()
{
[]() { cout << "hello, world" << endl; }();
return 0;
}
lambda函数形式:
[...] (...) ... {...}
[] 内是一个capture,可以在lambda内部访问的"nonstatic外部变量",如果没有要访问的变量,可以为空。static变量是可以直接被访问的。
() 内是参数,和函数参数一样。
... 是mutable, 异常明细, 属性说明符(noexcept等), 或者返回类型。如果其中之一出现,那么必须出现()。
{} 内是函数体,在这里面写明lambda要完成的工作。
[]里面到底是啥....
#include <iostream>
using namespace std;
int main()
{
int xxx = 10;
auto f = [xxx]() { cout << "hello, world " << xxx << endl; };
f();
return 0;
}
将外部变量passing by value给lambda,lambda可以在内部访问xxx,但是不可以修改xxx。
#include <iostream>
using namespace std;
int main()
{
int xxx = 10;
auto f = [&xxx]() { cout << "hello, world " << ++xxx << endl; };
cout << xxx << endl;
f();
cout << xxx << endl;
return 0;
}
lambda可以在内部修改xxx,并且会影响到外部变量。
特殊的形式:
[=] (...) ... {...} 将外部所有变量传递给lambda,但是不能在内部修改 -- passing by value
[&] (...) ... {...} 将外部所有变量传递给lambda, 可以在内部修改,并且影响外部变量 -- passing by ref..
[=,&y] (...) ... {...} 将所有变量传递给lambda,y可以在内部修改,其余变量不行
[y, &] (...) ... {...} 将所有变量传递给lambda,y不可以在内部修改,其余变量可以
参考博文:https://www.cnblogs.com/DevinSuMi/p/6290688.html
posted on
浙公网安备 33010602011771号