如何支持 MySet:<int>:迭代器

How to support MySet<int>::iterator

本文关键字:lt int 迭代器 gt MySet 何支持 支持      更新时间:2023-10-16

我正在做一个练习,遇到了一个问题
为了解决这个练习,我必须编写一个模板类MySet作为STL::set的包装器。下面的代码类似于
pair<MySet<int>::iterator, MySet<int>::iterator> p,其中对来自STL
现在我应该做些什么来支持MySet<int>::iterator
我试过typedef set<T>::iterator MySet<T>::iterator
和CCD_ 4,但它们都失败了。

====================================编辑==============================

#include <iostream>
#include <set>
using namespace std;
template<class T, class Q = greater<T> >
class MySet
{
public:
    using iterator = typename set<T, Q>::iterator;
    typedef typename set<T, Q>::iterator iterator;
    set<T, Q> tset;
    void insert(T value)
    {
        tset.insert(value);
    }
};
int main()
{
    MySet<int> intset;
    intset.insert(5);
    intset.insert(10);
    MySet<int>::iterator p;
}

类似这个的东西

template<class T>
class MySet
{
public:
    //using iterator = typename set<T>::iterator; // if with c++11
    typedef typename set<T>::iterator iterator; // if without c++11
    // rest of your code
}

您可以从std::set继承,如下所示:

    template <typename T>
    class MySet: public std::set<T>
   {
   };
   int main()
   {
     MySet<int>::iterator itr;
     // do other things
     return 0;
   }

尽管继承STL容器不是一个好的做法。请参阅此链接