How can I access local variables from inside a C++11 anonymous function?

后端 未结 3 1147
离开以前
离开以前 2020-12-24 06:29

I\'m doing a simple normalization on a vector (weights), trying to make use of STL algorithms to make the code as clean as possible (I realize this is pretty trivial with fo

3条回答
  •  攒了一身酷
    2020-12-24 06:56

    You need a closure.

    float tot = std::accumulate(weights.begin(), weights.end(), 0);
    std::transform(weights.begin(), weights.end(), [tot](float x)->float{return(x/tot);});
    

    In this case tot is captured by value. C++11 lambdas support capturing by:

    1. value [x]
    2. reference [&x]
    3. any variable currently in scope by reference [&]
    4. same as 3, but by value [=]

    You can mix any of the above in a comma separated list [x, &y].

提交回复
热议问题