使用boost lambdas

Nav*_*een 2 c++ boost boost-lambda

我是新手,并试图编写一些简单的程序来理解它.在下面的代码中,我试图用随机数填充数组.这是我的代码:

    using namespace boost::lambda;
    srand(time(NULL));
    boost::array<int,100> a;
    std::for_each(a.begin(), a.end(), _1=rand());
Run Code Online (Sandbox Code Playgroud)

但它看起来rand()只被评估一次,我的数组包含每个元素的相同值.任何人都可以指出这段代码有什么问题吗?

Ser*_*kov 10

好像你需要使用延迟函数调用

std::for_each(a.begin(), a.end(), boost::lambda::_1= boost::lambda::bind(rand) );
Run Code Online (Sandbox Code Playgroud)

这是另一个有趣的情况:延迟常量和变量