|
|
1
12
你可以用
例如:
|
|
|
2
5
不算ARARK已经提出的BooStY-Frutax,你今天在C++中有以下两个选项:
两者都要求您在别处指定循环的“体”,要么作为函数,要么作为函子(重载的类)
函子版本的开销基本为零。因为一个类型为
C++0x将引入lambda表达式,使第三种形式成为可能。
最后,它还将引入基于范围的for循环:
因此,如果您有权访问支持C++0x子集的编译器,则可以使用最后的一种或两种形式。否则,惯用的解决方案(不使用Boost)是使用
|
|
|
3
1
顺便说一下,MSVS 2008有一个“为每个”C++关键字。看看 How to: Iterate Over STL Collection with for each
|
|
|
4
1
与手写循环相比,更喜欢算法调用 原因有三: 1) 算法通常比程序员产生的循环更有效 2) 正确性: 编写循环比调用算法更容易出错。
3)
可维护性:
算法调用通常会生成更清晰、更精确的代码
|
|
|
5
0
与for_each()相比,更喜欢几乎所有其他算法
考虑一下,一个较早回答的例子:
使用std::copy,整个过程会变成: std::copy(array.begin()、array.end()、std::ostream_迭代器(std::cout,“\n”); |
|
|
6
0
完全清楚,即使它是40岁(显然不是C++)。 如果容器始终是一个向量(STL名称),我认为索引没有错,将该索引称为整数也没有错。 在实践中,通常需要同时迭代多个相同大小的容器,从每个容器中剥离一个数据,并对其中的许多容器进行处理。尤其是在这种情况下,为什么不使用索引呢? 至于上面SSS的第2点和第3点,我认为对于复杂的情况也是如此,但通常迭代1…N通常和其他任何事情一样简单和清晰。 如果你必须在白板上解释算法,你能用“i”或不用“i”更快吗?我认为,如果您的meatspace解释在索引中更清晰,请在代码空间中使用它。
|
|
|
Julia · 矢量中相加为总和S的值的数量 3 年前 |
|
|
C_Rod · 在模板方法中确定STL容器中项目的数据类型 4 年前 |
|
|
quantumwell · 将空向量放入std::map() 8 年前 |
|
|
OutOfBound · 对未初始化内存使用算法的优点 8 年前 |
|
|
DarthRubik · 在使用列表删除之后,迭代器如何不无效 8 年前 |