来自cppreference.com的std :: none_of示例

时间:2017-01-27 01:23:07

标签: c++

任何人都可以帮助我理解这个例子:

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";
}

1 个答案:

答案 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}}。