我正在用數據成員編寫我自己的矢量類Vector:T * array,size_t vector_size和size_t容量。我想創建一個sort()方法:爲矢量類寫一個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型,焦炭等,但它工作得很好,當我試圖解決一個向量由向量元素的它贏得了」編譯。 從我讀我需要定義以某種方式<
運營商,但我真的不知道該怎麼做......
我曾嘗試:
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:錯誤:不對應的「操作<'in'* __first < __pivot'
請注意,語法'Vector>'僅支持自C++ 11標準,如果您想要支持非C++ 11編譯器,應該避免使用該語法。「old」語法需要'>>'之間的空格來區分右移運算符:'Vector >' –
leemes
...但是如果您需要C++ 11支持,請使用lambdas作爲比較! ;)http://stackoverflow.com/q/7767998/592323 – leemes