gpt4 book ai didi

c++ - 中有功能组合的东西吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:36 26 4
gpt4 key购买 nike

使用 C++0x lambda 可以很容易地完成我想做的事情。我只想弄清楚如何使用 bind1st 来做到这一点和 bind2nd仅。

我需要找到第一个元素 i在 vector 中 v , 这样 (i-1)/p1 == p2其中 p1 和 p2 是预定义的整数。

find_if(v.begin(), v.end(), ???)

我不知道如何用 minus<int> 构成谓词divides<int> equal_to<int>bind2nd .好像我需要一些函数组合

equal(div(minus(i, 1), p1), p2)

这可能吗?

请不要提出解决方法,例如编写独立的一元函数或带有 operator() 的结构体.我对函数中的仿函数机制以及 bind1st 非常感兴趣和 bind2nd .这不是真正的代码,只是兴趣。谢谢 :)

最佳答案

不幸的是,只有当前的 functional 库无法实现您正在尝试做的事情。您需要创建自己的类或函数来进行组合。

Boost 曾经提供一个 Compose 库,用于组合这样的函数,但我认为它在引入 Bind 和 Lambda 时被删除了。

为了完成,它可以通过 bind 使用类似的东西来完成:

std::bind(std::equal_to<int>(), /* ... == P2 */
std::bind(std::divides<int>(), /* ... / P1 == P2 */
std::bind(std::minus<int>(), _1, 1), /* (x - 1) / P1 == P2 */
p1),
p2);

关于c++ - <functional>中有功能组合的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6752560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com