C++ 标准::排序不';不能识别迭代器范畴
我的一些向量迭代器的实现:C++ 标准::排序不';不能识别迭代器范畴,c++,templates,c++11,iterator,C++,Templates,C++11,Iterator,我的一些向量迭代器的实现: class iterator : public std::iterator<std::input_iterator_tag, int> { Vector<T> *vector; size_t position; public: iterator(Vector<T> *vector_, size_t idx) {...}; iterator(const iterator &it) {...};
class iterator : public std::iterator<std::input_iterator_tag, int> {
Vector<T> *vector;
size_t position;
public:
iterator(Vector<T> *vector_, size_t idx) {...};
iterator(const iterator &it) {...};
friend bool operator == (const iterator &a, const iterator &b) {...};
friend bool operator > (const iterator &a, const iterator &b) {...};
friend bool operator < (const iterator &a, const iterator &b) {...};
friend bool operator >= (const iterator &a, const iterator &b) {...};
friend bool operator <= (const iterator &a, const iterator &b) {...};
friend bool operator != (const iterator &a, const iterator &b) {...};
iterator &operator = (const iterator &b) {...};
T operator * () {...};
iterator &operator ++ () {...}
iterator &operator -- () {...}
std::ptrdiff_t operator - (const iterator &b) const {...}
};
类迭代器:公共std::迭代器{
向量*向量;
大小和位置;
公众:
迭代器(Vector*Vector,size\t idx){…};
迭代器(constiterator&it){…};
friend bool运算符==(常量迭代器&a,常量迭代器&b){…};
friend bool运算符>(常量迭代器&a,常量迭代器&b){…};
friend bool运算符<(常量迭代器&a,常量迭代器&b){…};
friend bool运算符>=(常量迭代器&a,常量迭代器&b){…};
friend bool操作符需要
RandomAccessIterator
s。虽然它可能会识别出你给它的是不兼容的迭代器,但它仍然不起作用。与问题无关,input\u iterator\u tag
不是此迭代器的正确标记,int
不是正确的值\u type
。显然你还没有阅读do用于std::sort
的文档,但它们是通过猜测进行编程的。我要补充的是std::sort
需要一个可变的RandomAccessIterator
。您应该提供返回l值引用的运算符*()
。例如,Libstdc++-v3需要这个(在插入排序中,从sort
调用).