首页 > 解决方案 > 初始化迭代器的最佳方法是什么?

问题描述

当我开始学习 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++for-loopiterator

解决方案


迭代器这个词在 C++ 中有特定的含义,而这不是迭代器。这通常称为计数器或循环变量。

(就最有效/或资源(RAM)使用/或最快计算而言)

在所描述的情况下,这些术语实际上没有任何区别。

变量的范围尽可能小通常是好的设计。在这种情况下,这是通过在循环的 init 语句中声明计数器来实现的。遵循这个经验法则通常会使编译器更容易减少内存使用,更重要的是,减少需要了解算法的程序员的认知负担。

有一些算法在循环之后需要计数器的最终值。可以通过将变量范围提升到循环范围之外来适应这种算法。


推荐阅读