我转换了
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不是一个非常大的设置。
答案 0 :(得分:5)
hiddenCorner是一个更新bmap的void函数(bmap是一个std :: map)。
bind
版本制作存储在活页夹中的other
和bmap
副本,然后将它们传递给该函数,因此该函数会更新复制在活页夹中,而不是bmap
本身。
所以显然你不仅没有试图自己衡量表现,你甚至没有测试它是否有效。没有cookie给你。
如果使用boost::ref
正确编写,假设您启用了优化,那么它应该与性能大致相当。