const T &josh::ArrayListIterator<T>::operator*() { if(!valid) throw InvalidIterator(); if(index >= numElts) throw EmptyIterator(); return data[index]; }
const T josh::ArrayListIterator<T>::next() { if(!valid) throw InvalidIterator(); if(index >= numElts) throw EmptyIterator(); return data[index++]; }
bool validateHeap(I first, I last) { if (last > first) { for (int i=0; i<(last-first)/2; ++i) { if ((first+2*i+1)<last && *(first+i)< *(first+2*i+1) ) return false; if ((first+2*i+2)<last && *(first+i)< *(first+2*i+2) ) return false; } return true; } else throw InvalidIterator(); }
const bool josh::ArrayListIterator<T>::hasNext() { if(!valid) throw InvalidIterator(); return index < numElts; }