如果有的话,他们两个有什么区别?如果没有差异,为什么要新名称?
事实上,它是旧名称:for
。
foreach
如果您的意思是为什么 C++不像其他语言那样为语言添加新名称,例如,那么您告诉我们为什么在旧名称正常工作时添加新名称?
从您的评论中:
但据我所知,所有其他人都将这种类型的语法称为“for-each 循环”。这个概念的新名称让我问是否确实存在比我看到的更多的差异。
好的。它是关于术语的:for-each-loop vs. range-based-for-loop。
我认为这是因为 C++ 基于范围的循环基本上迭代了std::begin(c)和std::end(c)定义的范围内的所有元素。换句话说,range-based-for-loop这个名字强调了定义range的哲学和迭代器。begin
end
为了进一步解释这一点,基于范围的循环仅适用于那些定义了begin()
和的集合end()
:
std::vector<int> v;
int a[100];
int *p = new int[100];
for(int i : v) {} // works : begin(v) and end(v) are defined
for(int i : a) {} // works : begin(a) and end(a) are defined
for(int i : p) {} // does not work : begin(p) and end(p) are not defined
希望有帮助。