【发布时间】:2013-01-04 13:54:03
【问题描述】:
C++11 中可用的“for each”语法风格似乎允许在不知道数组的实际大小(元素数量)的情况下进行数组迭代。我假设,因为它是新标准的一部分,所以这是完全安全的,即使对于 C 数组也是如此。通常,您还必须在操作之前单独知道 C 数组的大小,但我希望任何使用过这种新 C++ 技术的人验证它的工作方式与您期望的完全一样:
extern float bunch[100];
for (float &f : bunch) {
f += someNumber;
}
关于这种技术的非明显副作用或缺点,我有什么需要了解的吗?它在我看到的代码中没有显示太多,可能是因为大多数代码都是在标准中之前编写的。想确保它的罕见使用不是因为其他一些不为人知的原因。
【问题讨论】:
-
您始终可以知道数组的大小 (gist.github.com/3959946#file-arrays-h-L33)。如果你把它转换成指针,你就不再知道它的大小了。
-
@R.MartinhoFernandes:要点不错!
-
一般而言,通过放弃普通数组并迁移到标准库容器,您将过上更快乐的 C++ 生活
标签: c++ arrays templates template-argument-deduction for-range