C++的闭包,或者说伪函数,应该怎么传递给另一函数使用,能给个具体例子么

发布于 2021-11-15 16:08:36 字数 19 浏览 844 评论 8

最好是带参量传递和上下文的那种,谢谢啊

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

夜无邪 2021-11-20 01:37:13

http://cplusplus.com/reference/algorithm/sort/

函数对象使用的典型例子,效率超过函数指针,因为函数指针不能内联

最偏执的依靠 2021-11-20 01:36:06

看下boost文档再问吧.

旧伤慢歌 2021-11-20 01:35:08

很多脚本,函数式语言实现的闭包 要求能自动绑定 当前作用域的局部变量.  C++的函数对象无法做到.

 func() {

    BIBAO_bianlian int i;
     return  BIBAO_hanshu(); //不管这个BIBAO_hanshu怎么做, 旧的C++都不可能直接使用i, 并且出了func作用域还能继续用这个i;
}
   完美支持必包的 需要C++的 lambda表达式, 它实现在c++ 0x标准中.
   不要求自动绑定局部变量的话, 普通的functor 以及boost的bind和function都能很好满足了. 可以阅读下boost的文档, 以及stl中的一些仿函数.

丢了幸福的猪 2021-11-20 01:25:37

很多脚本,函数式语言实现的闭包 要求能自动绑定 当前作用域的局部变量.  C++的函数对象无法做到.

 func() {

    BIBAO_bianlian int i;
     return  BIBAO_hanshu(); //不管这个BIBAO_hanshu怎么做, 旧的C++都不可能直接使用i, 并且出了func作用域还能继续用这个i;
}
   完美支持必包的 需要C++的 lambda表达式, 它实现在c++ 0x标准中.
   不要求自动绑定局部变量的话, 普通的functor 以及boost的bind和function都能很好满足了. 可以阅读下boost的文档, 以及stl中的一些仿函数.

女中豪杰 2021-11-20 01:07:03

boost bind和function 完美组合

叹沉浮 2021-11-19 18:34:06

add100不就是个对象么?你可以这样用

struct AddSome {...};

int func(const AddSome &op, int v) {
    return op(v);
}

AddSome add100(100);
std::cout << func(add100, 10);

情场扛把子 2021-11-19 14:02:23

这是个不动脑子的例子

struct AddSome {
    AddSome(int base) : base_(base) {}
    int operator()(int v) const { return v+base_; }
    int base_;
};

AddSome add100(100);
std::cout << add100(5);

勿忘初心 2021-11-18 21:14:11

这是个不动脑子的例子

struct AddSome {
    AddSome(int base) : base_(base) {}
    int operator()(int v) const { return v+base_; }
    int base_;
};

AddSome add100(100);
std::cout << add100(5);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文