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

C++ 如何支持MySet<;int>;::迭代器,c++,stl,iterator,C++,Stl,Iterator,我在做练习,遇到了一个问题。 为了解决这个问题,我必须编写一个模板类MySet作为STL::set的包装器。 在下面的代码中,有类似于 pair p其中pair来自STL。 现在,我应该如何支持MySet::iterator? 我尝试了typedef set::iterator MySet::iterator 和typedef T*迭代器,但都失败了 =========================================================================

我在做练习,遇到了一个问题。
为了解决这个问题,我必须编写一个模板类MySet作为STL::set的包装器。 在下面的代码中,有类似于
pair p
其中pair来自STL。
现在,我应该如何支持
MySet::iterator

我尝试了
typedef set::iterator MySet::iterator

typedef T*迭代器
,但都失败了

=========================================================================================================================================================

#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;
}
#包括
#包括
使用名称空间std;
模板
类MySet
{
公众:
使用iterator=typename set::iterator;
typedef typename set::迭代器迭代器;
设置tset;
无效插入(T值)
{
t插入(值);
}
};
int main()
{
MySet集;
插入(5);
插入(10);
MySet::迭代器p;
}

您可以从std::set继承如下内容:

    template <typename T>
    class MySet: public std::set<T>
   {

   };

   int main()
   {
     MySet<int>::iterator itr;
     // do other things

     return 0;
   }
模板
类MySet:public std::set
{
};
int main()
{
MySet::迭代器itr;
//做其他事情
返回0;
}
虽然继承STL容器不是一个好的实践。看到这个了吗

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
}
模板
类MySet
{
公众:
//使用iterator=typename set::iterator;//如果使用c++11
typedef typename set::iterator iterator;//如果没有c++11
//代码的其余部分
}

尝试
typedef set::iterator iterator
失败。错误:“std::set::iterator”之前需要“typename”,因为“std::set”是一个依赖范围|
使用iterator=set::iterator
也失败。(我的编译器不支持c++11)我按照你的建议编写了一个测试,但仍然无法运行。查看我的新编辑。@user3505816编译是的。似乎网站使用的编译器支持c++11,而我的不支持。还有别的办法解决我的问题吗?谢谢。@user3505816我是说用iterator=typename set::iterator注释掉
在您的代码中