gpt4 book ai didi

c++ - 为什么使用绑定(bind)而不是函数调用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:51 24 4
gpt4 key购买 nike

在这种情况下使用 boost::bind 的优势是什么

std::for_each(participants_.begin(), participants_.end(),
boost::bind(&chat_participant::deliver, _1, boost::ref(msg)));

代替

for(iterator actual = participants_.begin(); actual != participants_.end(); ++actual)
(*actual)->deliver(msg);



Link to the whole code (这是 boost 教程提供的一个简单的服务器示例)。

最佳答案

我认为这只是在 C++11 之前,对于大多数事情,通常推荐算法而不是普通的 for 循环。理论上,更容易理解代码的用途,因为您不必先理解整个循环的实现。 for_each 可能是一个极端,因为它的 for 循环实现是最简单的。

在 lambda 函数之前,如果您想在不定义自定义仿函数的情况下使用该算法,“boost::bind”只是一个简单的要求。

如今,使用基于范围的 for 循环,您只需执行以下操作:

for (auto& participant : participants)
participant->deliver(msg);

不过,对于更复杂的循环,算法仍然更好(尤其是现在您不必使用“boost::bind”)。

关于c++ - 为什么使用绑定(bind)而不是函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22592864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com