我有:
struct Mystruct
{
void Update(float Delta);
}
typedef std::map<int, Mystruct*> TheMap;
typedef TheMap::iterator TheMapIt;
TheMap Container;
并想做:
for(TheMapIt It = Container.begin(), Ite = Container.end(); It != Ite; ++It)
{
It->second->Update(Delta);
}
使用std::for_each
,如何做到这一点?
我想我可以声明如下函数:
void Do(const std::pair<int, Mystruct*> Elem)
{
Elem->Update(/*problem!*/); ---> How to pass Delta in?
}
或者制作另一个结构:
struct Doer
{
Doer(float Delta): d(Delta) {}
void operator(std::pair<int, Mystruct*> Elem)
{
Elem->Update(d);
}
}
但这需要一个新的结构。
我想要实现的是使用简单std::for_each
的东西std::bind_1st
,std::mem_fun
比如使用的方式std::vector
,有可能吗?
使用前请考虑使用std
方式boost
,谢谢!
我已经引用了这个,但它没有提到带有输入的成员函数...... 我将如何使用 for_each 删除 STL 映射中的每个值?