【发布时间】:2011-09-12 19:41:11
【问题描述】:
这是我的类如何定义的一般概念(它执行的操作不是下面提到的)
struct Funktor
{
Funktor(int val):m_val(val){}
bool operator()(int arg1, int arg2) { return m_val==arg1*arg2; }
int m_val;
};
现在我有一个上述对象的向量,我正在尝试使用 for_each 调用 operator(),有没有办法做到这一点?我知道可以使用 bind2nd 和 mem_func_ref 来完成,但是当只有一个参数但有两个参数时,我还没有找到方法。
int main()
{
std::vector<Funktor> funktors;
funktors.push_back(Funktor(10));
funktors.push_back(Funktor(20));
funktors.push_back(Funktor(30));
int arg1 = 5, arg2 = 6;
//instead of the for loop below I want to use for_each
for(std::vector<Funktor>::iterator itr = funktors.begin(); funktors.end() != itr; ++itr)
{
(*itr)(arg1,arg2);
}
}
感谢您的帮助。最好的。
简历
【问题讨论】:
-
你能解释一下你为什么要这样做吗?它看起来实际上是一个空操作。
-
@Mark:你的意思是 operator() 什么都不做?这只是为了让我了解我的班级结构。
-
@blueskin :他的意思是
std::for_each丢弃了给定函子的结果,因此永远不会使用返回的bools,这使得这个特定的样本毫无意义。 -
哦,对不起,这只是一个例子,我的班级并没有完全按照这里显示的那样做。谢谢
标签: c++ vector foreach functor