我爱Aspx >> VC.Net >> Effective STL Item 43:优先使用STL泛型算法以取代手写循环所以,泛型算法内部是一个循环。此外,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的地址要舒服多了。但是,这篇文章将说明调用泛型算法更可取。事实上,这篇文章将证明调用泛型算法通常比手写的循环更优越。为什么?
有三个理由:
Windows外壳名字空间的浏览[05-21]
Com Introduction[05-21]
VC程序调试技巧备忘录[05-21]
NO MFC - 使用 .log 调试程序[05-21]
VB的ShowInTaskbar功能分析以及用..[05-21]
自己动手丰衣足食-搞定网页乱码[05-21]
CUJ:普及知识:typeint[05-21]
关于VC代码的编写和调试(三)[05-21]
通过串口收发短消息(上)[05-21]
A LITE VIRUS ABOUT PE INFECT[05-21]