C++ 迭代器:实现迭代器类时出错

Posted

技术标签:

【中文标题】C++ 迭代器:实现迭代器类时出错【英文标题】:C++ iterators : error on implementing an iterator class 【发布时间】:2020-02-08 18:17:45 【问题描述】:

我有一个任务,我需要实现一个哈希表类,包括一个迭代器类。我已经定义了类 Hash:

template <class KeyType, class ValueType>
class Hash

    class Pair
    
    public:
        Pair(KeyType a_key) :
        m_key(a_key)
        
        
        Pair(KeyType a_key, ValueType a_val) :
        m_key(a_key), m_val(a_val)
        
        

        KeyType m_key;
        ValueType m_val;    
    ;

public:
    typedef size_t (*HashFunc)(KeyType);

    class Iterator
    
        friend class Pair;
    public:
        //Iterator()
        //Iterator(const Iterator& a_other)
        //Iterator& operator=(const Iterator& a_other)
        //~Iterator

        void operator++();

        ValueType& operator*()  return *m_itr->m_val;

    private:
        typedef typename std::list<Pair*>::iterator m_itr;
        size_t m_hashIndex;
    ;

    Hash(size_t a_size, HashFunc a_func);
    ~Hash();

private:
    HashFunc m_hashFunc;
    size_t m_size;
    std::list<Pair*>*  m_hash;
;

ValueType&amp; operator*() return *m_itr-&gt;m_val; 行中,我收到以下错误:expected primary-expression before ‘->’ token 我找不到问题所在。 任何人都可以提供一些建议吗?提前致谢!

【问题讨论】:

【参考方案1】:

这个

typedef typename std::list<Pair*>::iterator m_itr;

是一个typedef,它为std::list&lt;Pair*&gt;::iterator 声明一个别名类型,称为m_itr。我想你想拥有这种类型的成员:

typedef typename std::list<Pair*>::iterator itr_type;
itr_type m_iter;

【讨论】:

以上是关于C++ 迭代器:实现迭代器类时出错的主要内容,如果未能解决你的问题,请参考以下文章

C++ 迭代器iterator的实现原理

C++初阶----list模拟实现 +(迭代器总结)

C++ STL 基础及应用 迭代器

迭代器模式

在 C++ 中为我自己的自定义向量模板类实现迭代器(类似于 STL)[重复]

双向链表上的 Java 迭代器