我需要采用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);
}