我有一个要迭代的指针容器,调用一个成员函数,该函数的参数是引用。我如何用 STL 做到这一点?
我目前的解决方案是使用 boost::bind 和 boost::ref 作为参数。
// Given:
// void Renderable::render(Graphics& g)
//
// There is a reference, g, in scope with the call to std::for_each
//
std::for_each(
sprites.begin(),
sprites.end(),
boost::bind(&Renderable::render, boost::ref(g), _1)
);
一个相关的问题(我从中得出了我当前的解决方案)是boost::bind 与具有引用参数的函数。这特别询问如何使用 boost 来做到这一点。我问的是如何在没有提升的情况下完成。
编辑:有一种方法可以在不使用任何boost
. 通过使用std::bind
和朋友,可以在 C++11 兼容的编译器中编写和编译相同的代码,如下所示:
std::for_each(
sprites.begin(),
sprites.end(),
std::bind(&Renderable::render, std::placeholders::_1, std::ref(g))
);