我有一個容器對象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