我有这个简单的函数来检查值是否在列表中:
template <class T>
bool IsinList(list<T> l, T x)
{
for(list<T>::iterator it=list.begin(); it != list.end(); it++)
{
if (*it == x)
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我在同一个.cpp文件中使用了这个函数,如下所示:
if (!IsinList (words, temp))
goodwords.push_back(temp);
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
'std::list' : use of class template requires template argument list
Run Code Online (Sandbox Code Playgroud)
我无法弄清问题是什么.我检查过以前的问题,但没有帮助.你能解释一下我做错了什么吗?
错字:
list.begin() / list.end()
Run Code Online (Sandbox Code Playgroud)
应该
l.begin() / l.end()
Run Code Online (Sandbox Code Playgroud)
你的变量被调用l,而不是list.
编辑:
正如马丁霍所指出的那样,这可能还不够.有些编译器会接受这个,但由于迭代器依赖于模板参数,因此您可能需要一个typename:
typename list<T>::iterator it=list.begin()
Run Code Online (Sandbox Code Playgroud)