列表:<T>:迭代器无法正常工作

list<T>::iterator is not working right

本文关键字:常工作 工作 迭代器 lt gt 列表      更新时间:2023-10-16

我正在C++创建一个模板类,并在其中使用std::list。出于某种原因,我的编译器不喜欢我尝试为列表声明和构造迭代器的方式。

在我的HashTable.h文件中,我有:

template <typename T> class HashTable {
    bool find(T thing) {
        // some code
        list<T>::iterator iter;
        for (iter = table[index].begin(); iter != table[index].end(); ++iter) {
            // some more code
        }
    }
}

它给了我HashTable.h:77: error: expected ';' before "iter"作为错误消息。

迭代器的正确语法是什么?

或者这是对的,我需要为我打算在 HashTable 模板中使用的每个类创建一个迭代器类?如果是这样,那就太糟糕了...

您需要

使用 typename 来告诉编译器list<T>::iterator确实是此上下文中的类型。

typename list<T>::iterator iter;

原因相当模糊;有关更多详细信息,请参阅C++常见问题解答:http://www.parashift.com/c++-faq-lite/templates.html#faq-35.18。