开发者社区> 问答> 正文

普通数组如何基于范围工作?

在C ++ 11中,您可以使用基于范围的for,它foreach与其他语言一样。它甚至适用于纯C数组:

int numbers[] = { 1, 2, 3, 4, 5 }; for (int& n : numbers) { n *= 2; } 它怎么知道什么时候停止?它仅适用于在与使用的作用域相同的范围内声明的静态数组for吗?您如何for在动态数组中使用它? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 19:37:16 370 0
1 条回答
写回答
取消 提交回答
  • 它适用于任何类型为数组的表达式。例如:

    int (*arraypointer)[4] = new int[1][4]{{1, 2, 3, 4}}; for(int &n : *arraypointer) n *= 2; delete [] arraypointer; 要进行更详细的说明,如果传递到右侧的表达式的类型:是数组类型,则循环从迭代ptr到ptr + size(ptr指向数组的第一个元素,即数组size的元素计数)。

    这与用户定义的类型相反,用户定义的类型通过查找begin并end作为成员(如果您传递类对象)或(如果没有这样调用的成员)非成员函数来工作。这些函数将产生begin和end迭代器(分别直接指向最后一个元素和序列的开始之后)。

    这个问题弄清楚了为什么存在这种差异。

    2020-02-08 19:37:26
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载