使用Pair和iterator c ++

时间:2016-01-11 21:19:34

标签: c++ templates c++11 dictionary

请帮忙完成这项任务,我需要编写一个简化的地图模板,其中包含Pair类和迭代器类,我是初学者,我真的很烦乱,对此感到困扰,我会很高兴只有标题的一些帮助。

#include <cassert>
#include <functional>
#include "Exceptions.h"


template <typename DataType>
    struct Node {
      DataType        data;
      Node<DataType> *next;
      };

namespace mtm {

template <class KeyType, class ValueType, class CompareFunction = std::less<KeyType> >

class MtmMap {
public:
    class Pair {
    public:
        Pair(const KeyType& key, const ValueType& value)
            : first(key), second(value){}
        const KeyType first;
        ValueType second;
        ~Pair() = default;
        Pair* begin();
        Pair* end();
        void insert();
        void insert(const KeyType&, const ValueType&);
        void remove(const KeyType&);
        bool containsKey(const KeyType& key) const;
        int size() const;
        Pair& operator=(const Pair&) = default;
        ValueType& operator[](const KeyType&);
        const ValueType& operator[](const KeyType&) const;
        Pair& operator[]();

    /*private:
    Node<Pair> _pairs;
    int _size;
    */
    };
    class iterator{
    /*private:
        Pair *cur_itr;
        Node<Pair*> pair_ptr;
    */
    public:
        iterator();
        iterator(const Pair*);
        iterator(const iterator&);
        ~iterator();
        iterator& operator=(const iterator&) = default;
        iterator& operator++(int);
        iterator& operator++();
        iterator& operator*();
        bool operator==(const iterator&);
    };

    bool operator!=(const iterator&, const iterator&);
};



} 

我得到了一个空白部分,如下:

#include <cassert>
#include <functional>
#include "Exceptions.h"

namespace mtm {

template <class KeyType, class ValueType, class CompareFunction = std::less<KeyType> >
class MtmMap {
public:
    class Pair {
    public:
        Pair(const KeyType& key, const ValueType& value)
            : first(key), second(value) {}
        const KeyType first;
        ValueType second;
    };
};

}

第一部分是在我编写实现运算符和函数所需的全部内容之后。请注意,它是地图容器的简化版本,所以我只需要这部分,不使用任何STL

有人可以帮助编写私有字段以及属于模板类MtmMap结构的其他东西吗?

使用list结构的想法是我的,因为我需要运算符列表和对作为容器,我可以看到它。

任何其他想法,评论和内容都会非常好,我将非常感激,非常感谢。

修改 为了澄清我的问题,在我继续使用cpp文件进行实现之前,我已经陷入困境,因为我不明白我应该如何实现地图的所有功能,如何存储它们等等。 我需要帮助来完成这个标题。

0 个答案:

没有答案