任何人都可以帮助我理解这个例子:
v这里是std :: vector。我认为这里的std :: bind将其中的内容绑定到函数std :: none_of,因为它是条件。 std :: modulus是两个参数的mod。但是为什么他们的_1和2没有下划线。
if (std::none_of(v.cbegin(),
v.cend(),
std::bind(std::modulus<int>(), std::placeholders::_1, 2))) {
std::cout << "None of them are odd\n";
}
答案 0 :(得分:2)
std::modulus<int>()
是一个带有两个参数的函数对象。
std::bind(std::modulus<int>(), std::placeholders::_1, 2)
创建一个带有一个参数的函数对象。它需要一个参数,因为它有一个占位符。 std::modulus<int>()
的第二个参数与数字2
绑定。
然后使用这个新的一元函数对象在none_of
范围内调用v
,在向量中的每个项目上调用它。所以基本上是检查x % 2
中每个元素x
的{{1}}。