我不熟悉在C ++中使用模板,而我正试图通过模板列表进行迭代。
这是我的代码
template <typename T>
void pleaseWork(const list<T>& aList, list<T>& list1, list<T>& list2)
{
typename list<T>::iterator i;
int n = 0;
for(i = aList.begin(); i != aList.end(); ++i) {
//Do something crazy
n++;
}
}
int main()
{
list<int> lista;
list<int> list1;
list<int> list2;
for (int i = 0; i < 10; i++) {
lista.push_back(i*2);
}
pleaseWork(lista, list1, list2);
return 0;
}
编译时出现以下错误:
错误:i = ((const std::list<int, std::allocator<int> >*)aList)->std::list<_Tp, _Alloc>::begin
中的'operator ='与_Tp = int,_Alloc = std :: allocator'
感谢您的帮助
答案 0 :(得分:1)
aList
是对const
的引用,因此begin()
将返回const_iterator
。
如果编译器支持,请使用auto
。
答案 1 :(得分:0)
由于您要将pleaseWork
引用传递给const
列表,因此您需要使用const_iterator
来访问其内容。