T *配列、size_t vector_size、size_t容量のデータメンバーを使用して、独自のベクトルクラスVectorを作成しています。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;
}
これは私が得るエラーの1つです:
/usr/include/c++/4.6/bits/stl_algo.h:2212:4:エラー:'* __first <__pivot'</p>の'operator<'に一致しません