我的老师通常从一个开始索引数组.所以,基本上,当我们需要他使用的100个元素的数组时
int a[101]
Run Code Online (Sandbox Code Playgroud)
代替
int a[100]
Run Code Online (Sandbox Code Playgroud)
例如,他像这样填写:
for (int i = 1; i <= 100; i++)
cin >> a[i];
Run Code Online (Sandbox Code Playgroud)
使用这种方法有什么问题,还是应该避免使用?(从0开始处理索引时没有任何问题)
Sla*_*ica 16
我应该定期使用它,还是应该避免使用它?
你应该避免它.一个问题是,99.9%的C++开发人员不会与您和您的老师分享这种坏习惯,因此您会发现他们的代码难以理解,反之亦然.但是,这有更糟糕的问题.这样的索引将与任何标准算法和其他人跟随他们发生冲突,你会写明确讨厌的代码来解决它container.begin()和container.end()以及std::begin()和std::end()对C风格的阵列,按照到这是基于0的C++标准的工作.
注意:正如范围循环的注释中所提到的那样,隐式使用begin()/end()也会因为同样的原因而被破坏.虽然这个问题更糟糕,因为隐式使用了范围,并且在这种情况下没有简单的方法来使范围循环工作.