[英]What does “cout <<(_1*3)” mean?
我发现了一个简单的代码:
using namespace boost::lambda;
typedef std::istream_iterator<int> in;
std::for_each(
in(std::cin), in(), std::cout << (_1 * 3) << " " );
我发现_1
用于表示每个输入整数,但是_1
如何工作? 有谁知道?
PS:这段代码来自BOOST的第一个例子。 当我运行该文件时,我发现for_each将永远不会终止,并且在每次“返回”点击后它会保持读取数字。 知道为什么会这样吗?
Lambda将每个数字乘以3。 从stdin
读完后。 in
应该是迭代器 - 请粘贴完整代码。
_1
是占位符,如另一个答案中所述。 这个问题应该也被标记为Boost
。 那是一个Boost.Lambda 。
std::placeholders
命名空间包含占位符对象[_1, . . . _N]
[_1, . . . _N]
[_1, . . . _N]
其中N是实现定义的最大数量。
当用作std::bind
表达式中的参数时,占位符对象存储在生成的函数对象中,并且当使用未绑定参数调用该函数对象时,每个占位符_N将替换为相应的第N个未绑定参数。
占位符对象的类型是DefaultConstructible
和CopyConstructible
,它们的默认复制/移动构造函数不会抛出异常,对于任何占位符_N
,类型std::is_placeholder<decltype(_N)>
都是定义的,并且是从std::integral_constant<int, N>
派生的std::integral_constant<int, N>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.