从自定义类包装器返回std :: multiset迭代器

时间:2019-05-11 01:02:59

标签: c++ iterator multiset

我需要采用std :: multiset并将其包装在自定义类中,该类继承自其他类。除了我无法完全解决如何将预期结果返回给自定义类的调用者之外。

{'fail' : [("aa",1),("ab",1),("abc",1)], 'success' : [("aback",1),("abate",1)]}

但是我不知道如何将迭代器分配给当前的。

将电流放入存在/结束并尝试在其中分配电流将返回“标识符“当前”未定义”。

Begin()和end()当前定义如下。我认为应该可以使用,但是如果std :: iterator未存储在自定义迭代器类中,则无法看到使用运算符的方法。

class multiset : public datastructure
{
   std::multiset<std::string> the_set;
   std::size_t num_elts;
public:
   class iterator : public datastructure::iterator
   {
      std::multiset<std::string>::iterator current;

   public:
      iterator() : current(nullptr)
      {
      }
    /**
    *Below operators should return result returned by using the 
    *corresponding operator on current
    **/
      std::string &operator*(void)const;
      std::unique_ptr<datastructure::iterator> operator++(void);
      std::unique_ptr<datastructure::iterator> operator++(int);
      bool operator==(const datastructure::iterator &);
      bool operator!=(const datastructure::iterator &);
   };
   multiset(void);
   std::unique_ptr<datastructure::iterator> begin(void) const;
   std::unique_ptr<datastructure::iterator> end(void) const;

有什么想法吗? 需要btw unique_ptr。

添加: 继承自的数据结构示例。

std::unique_ptr<datastructure::iterator> multiset::begin(void) const
{
   std::multiset<std::string>::iterator head = the_set.begin();
   return std::make_unique<multiset::iterator>(&head);
}

std::unique_ptr<datastructure::iterator> multiset::end(void) const
{
   std::multiset<std::string>::iterator end = the_set.end();
   return std::make_unique<multiset::iterator>(&end);
}

0 个答案:

没有答案