Bir DynamicArray sınıfı oluşturdum ve bunun için bir yineleyici uyguladı. .cpp dosyalarından biri, rastgele değerlerle dolu bir n uzunluğundaki DynamicArray'ını alır ve bunu STL sıralamasıyla sıralamalıdır. Ancak, ben birkaç saat tinkered ve her zaman parametre olarak bu tür ile (başlamak çalıştırmaya çalışırken zaman hatası) ve bitiş() aldık: Ben referans için benim DynamicArray prototip vereceğizDynamicArray sınıfım için bir yineleyici oluşturmaya çalışıyorum. STL sıralama neden yineleyicimle çalışmıyor?
no type named 'value_type' in 'struct std::iterator_traits<DynamicArray<double>::iterator>'
:
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);
};
Bu hata ne anlama geliyor? Bunu nasıl düzeltebilirim? Şimdiden teşekkürler.
OP makul bir şekilde hızlı sıralamak istiyorsa, rasgele erişim yineleyici isteyecektir. – Yakk