簡體   English   中英

C ++如何使用“ loop(n)”表示“ for(int i = 0; i

[英]C++ How can I use “loop(n)” to represent “for(int i=0;i<n;i++)”?

定義絕對不是一個好的解決方案。

#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;
}

除了使用非常復雜的名稱代替i之外,還有其他解決方案嗎?

如果我對您的理解正確,那么使用宏執行此操作的(邪惡)方法將是:

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

int main()
{
    loop(10000)
    {
        std::cout << i << std::endl;
    }
    return 0;
}

使用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;
}

但是不要在真實的代碼中這樣做,只需編寫簡單for聲明即可,每個人都會理解您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM