如何实现map <int,list <string =“”>&gt;迭代器C ++?

时间:2016-08-31 14:20:16

标签: c++ pointers dictionary iterator operators

这是一项旧考试的练习,我不知道如何解决。

我有一个叫做字典的类,我想通过对数字键(the_map_key%2 == 0)实现一个迭代器,我不知道如何实现operator ++,函数开始结束。 这是代码。

class Dictionary{
  private:
     map<int,list<string> > information;

这就是练习给我的,接下来是我所做的但是我不知道如何继续,当然我应该做一个构造函数和析构函数,但这很简单,我有困难operator ++,函数开始结束。

  public:
     class iterator{
       private:
          *d;
       public:
          int & operator *()const;{return *d};
          iterator & operator++(){};
          iterator begin(){};
          iterator end(){};

作为示例,如果信息包含{1,something},{2,anything},{5,other} {6,an},迭代器information.begin()应该指向{2,anything},迭代器++应该指向到{6,an}。

2 个答案:

答案 0 :(得分:2)

您的迭代器类不应包含指针,它应包含map<int,list<string> >::iterator。您的operator*是微不足道的 - 只是前进 - 但由于您显然想要隐藏某些密钥,因此Dictionary::iterator::operator++无法转发map<int,list<string> >::iterator。我并不完全明白你想要用钥匙做什么,所以我会把这些细节留给你。

答案 1 :(得分:0)

在尝试解决问题后,我编写了代码,然后我问我的教授是否正确,他告诉我这是好的,所以这里是我试图做的代码:

require_once(ROOT . DS . 'vendor' . DS . 'hybridauth' . DS . 'hybridauth' . DS . 'hybridauth' . DS . 'config.php');
谢谢,你给我的答案帮助我做了一些或多或少好的事情。 如果你看到任何错误或其他什么我可以做得更好告诉我。