【问题标题】:Practise Questions for Templates,Functors,CallBack functions in c++?c++中模板、函子、回调函数的练习题?
【发布时间】:2011-02-16 23:36:10
【问题描述】:

过去一周我一直在阅读模板、函子、回调函数,并参考了一些好书和文章。

但是我觉得,除非我能获得良好的实践——在模板中编程并使用函子回调,否则我无法真正理解所有概念或在编码时流利地使用它们。

任何人都可以建议一些文章或书籍或网站,其中有问题的定义以及相同的解决方案。我可以为这个问题编写代码,然后检查我的解决方案是否足够好..

我还知道,我们的一些堆栈溢出成员是模板和回调函数方面的专家。如果他们能设计一个问题并发布一个解决方案,那就太好了,很多像我这样的模板初学者都可以从中受益。

【问题讨论】:

    标签: c++ templates callback functor


    【解决方案1】:

    我个人认为这是学习任何东西的错误方法。准备提出此类问题的人几乎肯定不会是技术专家。最好的学习方法是找到一个对您很重要的现实问题,然后使用该技术解决问题,并通过阅读文本和参考书以及在此类网站上发布相关问题来支持。

    【讨论】:

    • +1 找到问题,使用新工具解决问题,测试解决问题的方法,如果有导师,请让他们审核。如果您需要导师,这里有很多眼睛!
    【解决方案2】:

    一个很好的练习是用匿名函子替换命名函数。例如,不要使用诸如

    之类的谓词
    bool is_overdrawn(const Account& account)
    {
        return !account.is_balanced();
    }
    

    ,你可以通过std::not1(std::mem_fun_ref(&Account::is_balanced))合成一个仿函数。

    【讨论】:

    • 因为我想不出任何更简单但仍然不平凡的事情:) 当然,这是否使代码更具可读性是另一个问题。就个人而言,我喜欢它。
    • @Neil 从某种意义上说,这是一个练习,您可以通过练习学习将命令式函数转换为应用形式(当然,使用 C++ 语法)。我发现这本身就很有启发性,即使您决定自己不想使用这种风格。你甚至可以根据这样的风格偏好,在相反的方向上将匿名函子转换为命名函数——当然,这只有在你已经习惯了匿名函子的情况下才有可能,因此我个人认为这个练习非常有用:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多