【发布时间】:2012-07-04 12:40:21
【问题描述】:
我有一段代码是在新 ISO 生效之前由其他人编写的。
for (pa=a.begin(), i=0; pa != a.end(); ++pa) 中的 for LOOP 执行起来有点麻烦,因为语法中有 i=0 部分。此外,我必须在其他 for 循环语法前面加上 int 前面的 i 来读取 for ( int i .....)。但是,我不知道如何修复这一行中的int i=0:for (pa=a.begin ( ), i=0; pa != a.end ( ); ++pa)。请帮帮我。
for ( int i = 0; pa != a.end(); ++pa)
*pa = ++i;
for (int i=0; i<10; i++)
std::cout << "a[" << i << "]=" << a[i] << std::endl;
// int i; // note that this will work, but I do not want this extra line.
for (pa=a.begin(), i=0; pa != a.end(); ++pa)
std::cout << "a[" << i++ << "]=" << *pa << std::endl;
【问题讨论】:
-
它是在 1997 年第一个标准完成之前编写的。我怀疑仅仅因为你不想要那额外的行,人们就会将语言更改为不需要它...
-
您可以使用
std::pair或结构,但该行更容易阅读。 -
放上多余的线,稍微退缩一下,然后继续。
-
点很好,但我想知道是否有更“紧凑”的语法,影响: for (pa=a.begin(), int i=0; ... ....),但 int i=0;由于“int”前面的逗号,此处的声明将不起作用。任何进一步的澄清和帮助将不胜感激。