【问题标题】:Boost lambda::_1 in C++ 0x在 C++ 0x 中提升 lambda::_1
【发布时间】:2011-11-05 10:11:12
【问题描述】:
int main() 
{ 
    std::vector<int> v; 
    v.push_back(1); 
    v.push_back(3); 
    v.push_back(2); 

    std::for_each(v.begin(), v.end(), std::cout << boost::lambda::_1 << "\n");
} 

可以不使用 Boost 将这段代码翻译成 C++ 吗?我知道 C++ 0x lambda 表达式语法,但没有尝试在这种情况下使用占位符。

【问题讨论】:

    标签: c++ boost lambda placeholder c++11


    【解决方案1】:

    在这种情况下不需要占位符,因为 lambdas 捕获参数:

    std::for_each(v.begin(), v.end(), [](int x){std::cout << x << "\n";});
    

    【讨论】:

    • 考虑使用 [] 而不是 [=],因为您没有捕获任何内容。这样可以防止以后尝试捕获变量时出错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多