auto fn = [](int *a) for (int i = 0; i < 10; i++) cout << *a << endl; ;

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了auto fn = [](int *a) for (int i = 0; i < 10; i++) cout << *a << endl; ;相关的知识,希望对你有一定的参考价值。

知道函数干什么的 就是不懂这个函数名的写法auto fn = []第一次见

public class Day1 public static void main(String[] args) int a = 1; a++;
System.out.println(a);

方法要放在类里面,方法的实现要放在方法里面
参考技术A lambda表达式,百度搜下 参考技术B 就是创建临时函数以方便重复调用,这个一般在局部函数中使用,不暴露在外部的。
auto是C/C++的东西,在C++11标准的语法中,auto被定义为自动推断变量的类型。
[](); 是在定义一个函数,
记得怎么定义函数指针的么 typedef void (*FUNP)(int a); 类似的吧。
[]中括号里可以用&修饰,具体什么作用可以查查资料,我也不太清楚,在大部分情况下&符号不加也没关系,但有时编译器无法隐式捕获;
()小括号中是形参列表;
括号中是函数体,
因为是定义函数,大括号后面记得加 ; 分号。
例子:
void test()

auto fn = [&](int i)
printf("%d\n",i);
i++;
return i;
;
int var = 0;
while(var < 10000)

var = fn(var);


还有,利用此方法可以很方便的开辟线程
例子:之前用Qt写的测试代码,就没重新写例子
#include "thread"
#include <qmutex.h>
#include <QDebug>
#include <QTime>
long long tt = 0;
QMutex mtx;
int main(int argc, char *argv[])

std::thread *thd_test = new std::thread([&]()
bool quit = false;
while(!quit)

mtx.lock();
tt++;
if(tt== LLONG_MAX)
quit = true;
if(tt == 5000)
thd_test->detach();
mtx.unlock();
std::this_thread::sleep_for(std::chrono::milliseconds(2));

);
std::thread *thd_run = new std::thread([&]()
bool exit = false;
while(!exit)

mtx.lock();
qDebug() << "thd_run" << tt;
if(tt == 10000)
exit = true;
mtx.unlock();
std::this_thread::sleep_for(std::chrono::milliseconds(1));

);
thd_run->join();
qDebug() << "***********************************************";
std::this_thread::sleep_for(std::chrono::seconds(5));
qDebug() << "***********************************************";
std::thread *thd_after = new std::thread([&]()
bool exit = false;
while(!exit)

mtx.lock();
qDebug() << "thd_after" <<tt;
if(tt == 20000)
exit = true;
mtx.unlock();
std::this_thread::sleep_for(std::chrono::milliseconds(1));

);
thd_after->join();
return 0;

for (auto x : nums)

class Solution 
public:
    int findDuplicate(vector<int>& nums) 
        int n = nums.size() - 1;
        int l = 1, r = n;
        while (l < r)
            int mid = l + r >> 1;
            int cnt = 0;
            for (auto x : nums)
                if (x >= l && x <= mid)
                    cnt++;
            if (cnt > mid - l + 1) r = mid;
            else l = mid + 1;
        
        return r;
    
;

上述代码中
for (auto x : nums)
作用就是迭代容器中所有的元素,每一个元素的临时名字就是x,等同于下边代码
for (vector<int>::iterator iter = nums.begin(); iter != nums.end(); iter++)

以上是关于auto fn = [](int *a) for (int i = 0; i < 10; i++) cout << *a << endl; ;的主要内容,如果未能解决你的问题,请参考以下文章

C语言简单习题:auto int b=0 。。。。

使用范围for循环而不使用auto关键字c ++

for (auto x : nums)

for-auto使用

使用Lamda生成函数

Fn除以10007的余数是多少