I am trying to write a vector class which includes a friend function sort(algorithm is bubble sort) and I have some difficulty in this function. This sort function is also a template function of template iterator and iterator is typedef of T* in class vector. Below is my code:
namespace THU {
template <class T>
void iswap(T* a, T* b) {
T tmp = *a;
a = b;
b = &tmp;
}
template <class T>
class iVector {
protected:
int _size;
int use;
T* _vector;
public:
typedef T* iterator;
iVector(int n) : _size(n) {
_vector = new T[n];
use = 0;
}
iterator begin() { return _vector; }
iterator end() { return begin() + use; }
void clear() { use = 0; }
bool empty() const {
if (use == 0)
return true;
else
return false;
}
void pop_back() {
if (use > 0) {
use -= 1;
} else
throw use;
}
void push_back(const T& v) {
if (use < _size) {
_vector[use] = v;
use++;
} else
throw use;
}
T& operator[](int n) {
if (n >= 0 && n < use) {
return _vector[n];
} else
throw use;
}
friend void sort<iterator>(iterator begin, iterator end);
void print() {
for (int i = 0; i < use; i++)
std::cout << _vector[i] << " ";
std::cout << std::endl;
}
};
template <class iterator>
void sort(iterator begin, iterator end) {
iterator i = end - 1;
for (; i != begin; i--) {
iterator j = begin;
for (; j != i; j++) {
if (*j > *(j + 1))
iswap(j, j + 1);
}
}
}
} // namespace THU
and it meets error in the title. Can anyone help me?