我正在对向量(权重)进行简单的规范化,试图利用STL算法使代码尽可能干净(我意识到这对于for循环来说非常简单):
float tot = std::accumulate(weights.begin(), weights.end(), 0.0);
std::transform(weights.begin(), weights.end(), [](float x)->float{return(x/tot);});
Run Code Online (Sandbox Code Playgroud)
目前,匿名函数看不到tot,因此无法编译.使局部变量对匿名函数可见的最佳方法是什么?
在C++中使用迭代器是否有更漂亮/更简洁的方法?从我看过的教程中,我要么在任何地方都设置了typedef(这对于很多一次性for循环来说都很繁琐):
typedef std::vector<std:pair<int, int> >::iterator BlahIterator;
Run Code Online (Sandbox Code Playgroud)
或者有详细的寻找循环,如:
for (std::vector<std:pair<int, int> >::iterator it = ... ) ...
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?