【发布时间】:2021-10-31 16:28:21
【问题描述】:
我正在尝试编写一个包含友元函数排序的向量类(算法是冒泡排序),但我在这个函数中遇到了一些困难。这个排序函数也是模板迭代器的模板函数,迭代器是类向量中T*的typedef。以下是我的代码:
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
并且它在标题中遇到错误。谁能帮帮我?
【问题讨论】:
-
两个错误都在
friend void sort<iterator>的位置 -
您为什么认为
sort需要成为朋友?它不访问iVector的任何成员。
标签: c++ oop templates vector friend