问题 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 for loops): float tot = std::accumulate(weights.begin(), weights.end(), 0.0); std::transform(weights.begin(), weights.end(), [](float x)->float{return(x/tot);}); At present, tot is not visible to the anonymous function, so this doesn't compile. What's the best way of making a local variable visible to the anonymous function?