无法遍历模板列表C ++

时间:2011-11-01 04:45:08

标签: c++ list templates iterator

我不熟悉在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'

不匹配

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

aList是对const的引用,因此begin()将返回const_iterator

如果编译器支持,请使用auto

答案 1 :(得分:0)

由于您要将pleaseWork引用传递给const列表,因此您需要使用const_iterator来访问其内容。