热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在lambda表达式中使用c–std::pair

我只想知道如何在lambda表达式捕获括号内编写对.因为下面的代码没有编译所以我错过了一些东西……std::vector

我只想知道如何在lambda表达式捕获括号内编写对.
因为下面的代码没有编译所以我错过了一些东西……

std::vector> container1_;
for( auto iter : container1_ )
{
auto result = std::find_if( container2_.cbegin(), container2_.cend(),
[iter.first]( const std::string& str )->bool { return str == iter.first; } );
}
In member function ‘bool MsgChecker::CheckKeys()’:
error: expected ‘,’ before ‘.’ token
error: expected identifier before ‘.’ token

解决方法:

[iter.first]( const std::string& str )->bool { return str == iter.first; }
// ^^^^^^^^^^

Lambda捕获用于标识符,不用于任意表达式或其他任何内容.

只是传入它:

[iter]( const std::string& str )->bool { return str == iter.first; }

[C++11: 5.1.2/1]:

[..]

 capture:

   identifier

   & identifier

   this

[C++11: 2.11/1]: An identifier is an arbitrarily long sequence of letters and digits. [..]




推荐阅读
author-avatar
花自飘零009玲玲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有