【发布时间】:2015-01-26 19:39:28
【问题描述】:
我有一个结构节点:
struct node {
node *parent;
int x, y;
float f, g, h;
};
我定义了一个谓词条件 bool 函数如下来查找向量中是否已经存在结构成员。
bool Isinit(const node &nm, const node &ref)
{
if(nm.x==ref.x && nm.y==ref.y)
return true;
else
return false;
}
然后我这样调用函数:
vector<node*>::iterator referIt=find_if (open.begin(), open.end(), Isinit);
报错: 从“node*”类型的表达式中对“const node&”类型的引用进行无效初始化。有人可以向我解释这个错误吗?
【问题讨论】:
-
if (…) return true; else return false;是一个糟糕的反模式。改写return …;,逻辑上等价,可读性更强。
标签: c++ algorithm vector function-pointers