我正在编写自己的向量类 Vector,其中包含以下数据成员:T* 数组、size_t vector_size 和 size_t 容量。我正在尝试创建一个 sort() 方法:
template <class T>
void Vector<T>::sort(bool ascending)
{
std::sort(array,array+vector_size);
if(ascending==false)
std::reverse(array,array+vector_size);
}
当数组中的元素是 int、char 等类型时,它可以正常工作。但是当我尝试对由 Vector 元素组成的向量进行排序时,它不会编译。根据我的阅读,我需要以<
某种方式定义运算符,但我真的不知道该怎么做......
我努力了:
template <class T>
bool Vector<T>::operator<(Vector<T> & source) const
{
return (vector_size < source.vector_size);
}
我的主要外观是这样的:
int main() {
Vector<int> v1(5,1);
Vector<int> v2(7,2);
Vector<int> v3(3,3);
Vector<Vector<int>> v4;
v4 = {v1,v2,v3};
v4.sort(1);
return 0;
}
这是我得到的错误之一:
/usr/include/c++/4.6/bits/stl_algo.h:2212:4:错误:'* __first < __pivot'中的'operator<'不匹配</p>