C++如何使用"loop(n)"来表示"for(int i = 0; i <n; i ++)"?

iou*_*vxz -1 c++ macros

define绝对不是一个好的解决方案.

#define loop(n) for(int i=0;i<n;i++)
int main()
{
    int i = 0;
    loop(10000) { i++; };
    cout << i << endl;//i==0 here,because of naming duplication.
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

除了使用一个非常复杂的名称来替换我之外,还有其他解决方案吗?

rod*_*igo 5

如果我理解正确,用宏做的(邪恶的)方法是:

#define loop(n) for (int i=0; i < n; ++i)

int main()
{
    loop(10000)
    {
        std::cout << i << std::endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

一个不太邪恶的解决方案是lambda函数:

template<typename T>
void loop(int n, T func)
{
    for (int i=0; i < n; ++i)
        func(i);
}

int main()
{
    loop(10000, [] (int i)
        {
             std::cout << i << std::endl;
        });
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是不要在实际代码中这样做,只需编写简单的for声明,每个人都会理解你.