私はDynamicArrayクラスを作成し、それに対してイテレータを実装しました。私の.cppファイルの1つは、長さがnのDynamicArrayにランダムな値が入力され、STLソートでソートされています。しかし、私は数時間のために手を加えてきましたし、常にパラメータとして(開始とソート実行しようとしたときに、このエラーを得て)とend()している:DynamicArrayクラスのイテレータを作成しようとしています。私のイテレータでSTLソートが動作しないのはなぜですか?
no type named 'value_type' in 'struct std::iterator_traits<DynamicArray<double>::iterator>'
私は参考のために私のDynamicArrayのプロトタイプをあげます:
template<class T>
class DynamicArray {
public:
static T dummy;
class iterator { // iterator for begin() and end() functions
private:
T* ptr;
public:
iterator() { ptr = NULL; } // constructor, sets pointer to NULL
iterator(T* p) { ptr = p; } // parameterized constructor, sets pointer to data in DynamicArray
const T& operator*() const { return *ptr; } // pointer operator, returns pointer
void operator++() { if(ptr) ptr++; } // pre-increment operator, increments pointer
void operator++(int) { if(ptr) ptr++; } // post-increment operator, increments pointer
bool operator!=(const iterator & other) { return ptr != other.ptr; } // does not equal operator
};
private:
T* data;
bool* inUse;
unsigned int size;
unsigned int capacity;
public:
DynamicArray();
DynamicArray(const DynamicArray<T> &);
virtual ~DynamicArray();
DynamicArray<T> & operator=(const DynamicArray<T> &);
T operator[](unsigned int index) const;
T& operator[](unsigned int index);
unsigned int getSize() const;
unsigned int getCapacity() const;
bool containsKey(unsigned int index) const;
void deleteKey(unsigned int index);
iterator begin() const { return iterator(data); }
iterator end() const { return iterator(data + size); }
vector<unsigned int> keys() const;
void clear();
private:
void copy(const DynamicArray<T> &);
void deleteIt();
void setCapacity(unsigned int newCap = 10);
};
このエラーは何を意味しますか?どうすれば修正できますか?前もって感謝します。
OPがかなり高速にソートしたい場合、ランダムアクセスイテレータが必要になります。 – Yakk