Łuk*_*iak 6 c++ boost bind c++11
在这种情况下使用boost :: bind有什么好处
std::for_each(participants_.begin(), participants_.end(),
boost::bind(&chat_participant::deliver, _1, boost::ref(msg)));
Run Code Online (Sandbox Code Playgroud)
代替
for(iterator actual = participants_.begin(); actual != participants_.end(); ++actual)
(*actual)->deliver(msg);
Run Code Online (Sandbox Code Playgroud)
链接到整个代码(这是一个由boost教程提供的简单服务器示例).
我认为只是在C++ 11之前,算法通常被推荐用于大多数事情的简单for循环.从理论上讲,理解代码的目的更容易,因为您不必首先理解整个循环实现.for_each可能是一个极端,因为它的for循环实现将是最简单的.
在lambda函数之前,如果你想在不定义自定义函子的情况下使用算法,那么'boost :: bind'只是一个要求.
如今,使用基于范围的for循环,你只需这样做:
for (auto& participant : participants)
participant->deliver(msg);
Run Code Online (Sandbox Code Playgroud)
虽然算法对于更复杂的循环仍然更好(特别是现在你不必使用'boost :: bind').