我有一个容器对象lambda表达式和find_if:使用对集合
R Container;
R是list<T*>
类型或vector<T*>
的
我试图写入以下功能:
template<typename T, typename R>
T& tContainer_t<T, R>::Find(T const item) const
{
typename R::const_iterator it = std::find_if(Container.begin(), Container.end(), [item](const R&v) { return item == v; });
if (it != Container.end())
return (**it);
else
throw Exception("Item not found in container");
}
尝试方法时(v是我班的对象)
double f = 1.1;
v.Find(f);
我得到binary '==' : no operator found which takes a left-hand operand of type 'const double' (or there is no acceptable conversion)
我感到困惑与lambda表达式的语法和我应该写那里,找不到任何解释友好。
出了什么问题? 10X。
你会考虑将Find签名写为接受'(const T item)'而不是'(T const item)'吗?或者甚至更好,使用'const T&item'。 – Jaywalker
您正在将'const R&gt;作为参数传递给lambda,而不是'const T *'。 – sbabbi