T * array, 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 형, 문자 등으로 있지만 때 잘 작동 나는 '원 벡터 요소로 구성된 벡터를 정렬 할 때 t 컴파일. 나는 어떤 방법으로 <
연산자를 정의해야합니다 읽었습니다,하지만 난 정말 그 방법을 모르는 것과 ...
나는 시도했다 :
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"문법은 오른쪽 shift 연산자와 구별하기 위해'>> '사이에 공백이 필요합니다 : Vector > –
leemes
... 그러나 C++ 11 지원이 필요하다면 lambdas를 비교로 사용하십시오! ;) http://stackoverflow.com/q/7767998/592323 – leemes