大佬教程收集整理的这篇文章主要介绍了c – 如何在lambda中捕获变量,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
std::sort(begin(v),end(v),[](auto const &t1,auto const &t2) { return get<0>(t1) < get<0>(t2); // or use a custom compare function });
int k = 10; while(k--){ std::sort(begin(v),auto const &t2) { return get<k>(t1) < get<k>(t2); // or use a custom compare function }); }
int k = 10; while(k--){ std::sort(begin(v),[&k](auto const &t1,auto const &t2) { return get<k>(t1) < get<k>(t2); // or use a custom compare function }); }
但它不是正确的方法和错误错误:’k’的值在常量表达式中不可用.
如何捕获k变量?
std::get
只接受模板参数,即
expression whose value that can be evaluated at compiling time.
std::sort(begin(v),auto const &t2) { const int k = 3; return std::get<k>(t1) < std::get<k>(t2); // or use a custom compare function });
正如我在评论中写的那样,我知道const int = 3会将lambda表达式之外的k值隐藏起来,但是这个例子表明get在收到编译时间常量值时会起作用.
例如,如果您尝试设置k = 5,例如,其中v只有4个元组参数,编译器将给出错误,因为它知道这超出了范围.
std::vector<std::tuple<int,int,int>> v; std::sort(begin(v),auto const &t2) { const int k = 5; return std::get<k>(t1) < std::get<k>(t2); // or use a custom compare function });
以上是大佬教程为你收集整理的c – 如何在lambda中捕获变量全部内容,希望文章能够帮你解决c – 如何在lambda中捕获变量所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。