c++ - 初始化迭代器的最佳方法是什么?
问题描述
当我开始学习 C/C++ 时,在我的第一堂课中,我了解到在我们的代码中使用变量之前,我们必须始终声明变量。所以:
int iterator = 0; // with optional initialization of value accordingly with its use.
for (iterator = 0 ; ; ) // your loop
在这种情况下,我们可以将同一个变量重复iterator
用于我们想要的多个循环,而无需为每个循环声明一个变量。
然而,我最近发现我们也可以在循环中声明和初始化一个for
变量:
for (int iterator = 0 ; ; ) // your loop
在这种情况下,范围iterator
仅在 defor
循环内。由于它用作迭代器,并且在循环之外没有其他用途,因此一旦结束,变量就会丢失。
这让我产生疑问:初始化迭代器的最佳方法是什么?¹ 是否有针对此功能的“最佳实践”?
¹ =(就最高效/或资源 (RAM) 使用/或最快计算而言)
解决方案
迭代器这个词在 C++ 中有特定的含义,而这不是迭代器。这通常称为计数器或循环变量。
(就最有效/或资源(RAM)使用/或最快计算而言)
在所描述的情况下,这些术语实际上没有任何区别。
变量的范围尽可能小通常是好的设计。在这种情况下,这是通过在循环的 init 语句中声明计数器来实现的。遵循这个经验法则通常会使编译器更容易减少内存使用,更重要的是,减少需要了解算法的程序员的认知负担。
有一些算法在循环之后需要计数器的最终值。可以通过将变量范围提升到循环范围之外来适应这种算法。
推荐阅读
- ruby - 如何使用 socat 让 Sinatra 监听两个端口
- c# - 使用 Get 请求后如何找到对象内的项目?
- vimeo - Multiple Auto Play Vimeo Videos, but only one auto plays
- android - 清除存储后应用程序崩溃,错误代码为 14 SQLITE_CANTOPEN:无法打开数据库
- python - 使用 Python / Pandas / Numpy 计算图形/绘图中的循环数
- swift - 如何动画导航栏标题的变化
- mysql - AWS RDS Performance Insights - 查看完整查询
- node.js - 在 Node/Express 的异步函数中捕获错误
- windows - 使用 LTCG 构建 TensorFlow
- xamarin - 为什么 Xamarin DatePicker 绑定会导致导航失败?