相关疑难解决方法(0)

为什么用C循环变量在C++中编写for循环是如此"难"?

可能重复:
在C++中为什么我不能像这样编写for()循环:for(int i = 1,double i2 = 0; ...

AC开发人员会这样写:

int myIndex;
for (myIndex=0;myIndex<10;++myIndex) ...
Run Code Online (Sandbox Code Playgroud)

C++开发人员会编写这个来防止循环变量泄漏到循环外:

for (int myIndex=0;myIndex<10;++myIndex) ...
Run Code Online (Sandbox Code Playgroud)

但是,如果您有2个循环变量,则不能再执行此操作.以下内容无法编译:

for (int myIndex=0,MyElement *ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
Run Code Online (Sandbox Code Playgroud)

逗号运算符不允许以这种方式定义两个变量,因此我们必须这样写:

int myIndex;
MyElement *ptr;
for (myIndex=0,ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
Run Code Online (Sandbox Code Playgroud)

这打破了拥有真正的循环局部变量的优势.

一个解决方案可能是将整个结构放在大括号之间,如下所示:

{
int myIndex;
MyElement *ptr;
for (myIndex=0,ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
}
Run Code Online (Sandbox Code Playgroud)

但这并不是更优雅.

在C++(或C++ 0x)中有没有更好的方法呢?

c++ c++11

16
推荐指数
2
解决办法
1279
查看次数

标签 统计

c++ ×1

c++11 ×1