我转换了
for(std::set<shape::Face>::iterator face_iter=vec_face.begin(); face_iter!=vec_face.end(); face_iter++)
{
hiddenCorner(other, bmap, *face_iter);
}
进入
for_each(vec_face.begin(), vec_face.end(), boost::bind(hiddenCorner, other, bmap, _1));
显然,它不那么冗长,但是效率如何?
hiddenCorner是更新bmap的void函数(bmap是std :: map)。
注意:vec_face不是很大的大小集。
最佳答案
hiddenCorner是更新bmap的void函数(bmap是std :: map)。bind
版本制作存储在活页夹中的other
和bmap
副本,然后将它们传递给函数,因此该函数将更新活页夹中的副本,而不是bmap
本身。
因此,显然您不仅没有尝试自己衡量性能,甚至没有测试过它是否有效。没有适合您的Cookie。
如果使用boost::ref
正确编写,则假定您启用了优化功能,它的性能应该大致相当。
关于c++ - boost::bind与for循环的性能分析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27226668/