我的老师今天发表了这篇演讲,讲述了如何在C++中不再/很少使用循环,而是使用STL算法.他还说如果我确实需要使用for循环,请确保它使用迭代器或基于范围的for循环.
然后他继续讨论常规循环:
for (int i = 0; i < N; ++i) ...
Run Code Online (Sandbox Code Playgroud)
说这实际上应该永远不会被使用.
现在我正在编写一些代码,而常规for循环只是一个救生员.它适用于很多情况,它简单而简短,众所周知,每个人都立即知道发生了什么,并且它可以很快完成工作(这是C++,而不是Python!).此外,在实现数学算法时也非常清楚,因为这些算法是用索引描述的......而不是使用STL算法或迭代器.因此,使用常规for循环匹配该样式.
更重要的是,它不仅具有所有这些好处,而且我甚至认为在某些情况下,它是唯一的选择.没有其他选择.至少实际上并非如此.
例如,如果我需要迭代一大堆类似数组的容器,并且我需要一个索引来访问元素,那么常规for循环为我提供了索引.使用STL算法几乎是不可能的,因为我需要boost和zip,所以使用迭代器也很麻烦.
为什么我不应该使用这个惊人的结构?
我正在阅读一些代码,其中一个类具有私有const数据成员,然后是一大堆公共方法,它们提供对这些数据成员的只读访问.
这有什么意义?为什么不公开这些私人数据成员?它们是const,所以访问按照定义只读,人们可以通过theClass.theMember而不是theClass.getTheMember()更容易访问它们,而且你可以避免首先创建所有这些公共方法.每个成员变量一个,意味着O(n)效率低下!