我转换了

  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版本制作存储在活页夹中的otherbmap副本,然后将它们传递给函数,因此该函数将更新活页夹中的副本,而不是bmap本身。

因此,显然您不仅没有尝试自己衡量性能,甚至没有测试过它是否有效。没有适合您的Cookie。

如果使用boost::ref正确编写,则假定您启用了优化功能,它的性能应该大致相当。

关于c++ - boost::bind与for循环的性能分析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27226668/

10-12 23:56