在 C++11 中,您可以使用基于范围的for
,其作用为foreach
其他语言的。它甚至适用于普通的 C 数组:
int numbers[] = { 1, 2, 3, 4, 5 };
for (int& n : numbers) {
n *= 2;
}
它如何知道何时停止?它是否仅适用于已在同一范围内声明的静态数组for
用于?你会如何使用这个for
使用动态数组?
它适用于任何类型为数组的表达式。例如:
int (*arraypointer)[4] = new int[1][4]{{1, 2, 3, 4}};
for(int &n : *arraypointer)
n *= 2;
delete [] arraypointer;
对于更详细的解释,如果传递到右侧的表达式的类型:
是数组类型,则循环从ptr
to ptr + size
(ptr
指向数组的第一个元素,size
是数组的元素计数)。
这与用户定义的类型相反,用户定义的类型通过查找来工作begin
and end
如果传递类对象或(如果没有以这种方式调用的成员)非成员函数,则作为成员。这些函数将产生开始和结束迭代器(分别直接指向最后一个元素和序列的开始之后)。
这个问题澄清了为什么存在这种差异。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)