2016-02-07 37 views
0

下面是一個程序,其中main定義了兩個lambda。 a電話b嵌套lambda的效率

#include <iostream> 

int main() 
{ 
    auto b = []() { std::cout << "b" << std::endl; }; 
    auto a = [&]() { b(); }; 

    a(); 
} 

現在,由於b僅由a,也可以內部a定義:

#include <iostream> 

int main() 
{ 

    auto a = []() 
    { 
     auto b = []() { std::cout << "b" << std::endl; }; 

     b(); 
    }; 

    a(); 

} 

我的問題是這樣的:讓我們假設a在循環中反覆調用因此存在效率問題。預計大多數編譯器是否可以使b-inside-a版本與b-a-a版本一樣高效?

+2

_「有效率的擔憂」 _如?根據什麼?爲什麼在你分析並發現性能問題之前,你擔心「效率」? –

+0

爲什麼你認爲b-inside-a版本比b-outside-a版本更有效率? –

+2

爲什麼問一些你可以[自己嘗試](https://goo.gl/wLmEPt)? –

回答

1

這比這更好;這兩個項目將是相同的:

#include <iostream> 

int main() 
{ 
    std::cout << "b" << std::endl; 
}