很怀念VB和C#的foreach语法吗?对于C++只能用for语法造成程序冗长觉得很烦吗?foreach的确对于container而言非常好用且精简,C++/CLI已经增加上了for each语法了,事实上,C++也可使用foreach喔,STL提供了for_each() algorithm,可以弥补这个缺憾。
for_each() algorithm会将每个iterator当作const iterator处理,若只用普通的function,直接将function name传入即可,别忘了function name本身也是个pointer,若要用template function,则必须将该template function转成function pointer才可传进for_each algorithm,以下范例demo for_each() algorithm的用法。
1
}
for_each() algorithm不能修改iterator,若要修改iterator,需用transform() algorithm。
See Also
(原創) 如何正確的使用迴圈(使用for_each)? (C/C++) (STL) (template)
Reference
C++ Primer 3rd中文版 P.1145