• 您的位置我爱Aspx >> VC.Net >> Effective STL Item 43:优先使用STL泛型算法以取代手写循环
  • Effective STL Item 43:优先使用STL泛型算法以取代手写循环

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:48:39  关键字:
  • 所以,泛型算法内部是一个循环。此外,STL泛型算法涉及面广泛,这意味着很多你本来要用循环来实现的任务,现在可以改用泛型算法实现了。比如,有一个Widget类,它支持redraw()。

    class Widget {

    public:

    ...

    void redraw() const;

    ...

    };

    并且,你想redraw一个list中的所有Widget对象,你可能会使用这样一个循环:

    list<Widget> lw;

    ...

    for (list<Widget>::iterator i =

    lw.begin();

    i != lw.end(); ++i) {

    i->redraw();

    }

    但是你也可以用for_each()泛型算法:

    for_each(lw.begin(), lw.end(),

    mem_fun_ref(&Widget::redraw));

    对许多C++程序员而言,使用循环比调用泛型算法的想法自然多了,并且读解循环比弄明白mem_fun_ref和取Widget::redraw的地址要舒服多了。但是,这篇文章将说明调用泛型算法更可取。事实上,这篇文章将证明调用泛型算法通常比手写的循环更优越。为什么?

    有三个理由:

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:Effective STL Item 43:优先使用STL泛型算法以取代手写循环
    下一篇:Windows外壳名字空间的浏览
  • 相关文章