나는 C++ STL의 SORT에 대한 사용자 지정 비교 함수?
typedef pair < long , pair <bool ,long > > t;
vector <t> time ;
를 사용하고 난 표준을 사용하여 : : 정렬() 함수를 위의 벡터를 정렬 할 필요가 있지만에게 사용자 정의 비교 함수를 사용하여. 나는 그것의 버전을 썼지 만 제대로 작동하지 않습니다. 제 실수를 지적 해 주시겠습니까?
bool comp (const t &a , const t &b){
if (a.first < b.first)
return a.first > b.first ;
else if (b.first < a.first)
return b.first > a.first ;
else if (a.first == b.first)
{
if (a.second.first == false && b.second.first == true)
return a.first > b.first ;
else if (a.second.first == true && b.second.first == false)
return b.first > a.first ;
else
return a.first > b.first ;
}
}
inside main(){
sort (time.begin() ,time.end() ,comp) ;
}
사용자 정의 케이스 : 사전에
Before sorting : vector time
10 1 1
100 0 1
100 1 2
200 0 2
150 1 2
500 0 2
200 1 2
300 0 2
After Sorting :
10 1 1
100 0 1
100 1 2
150 1 2
200 0 2
200 1 2
300 0 2
500 0 2
감사합니다.
이 질문은 이러한 것들을 어떻게 정렬해야하는지에 대한 영어 설명을 사용할 수 있습니다. 즉, 하나의 "t"를 다른 것보다 "덜"만드는 것입니다. 이 코드는이 문제에 대해 다소 혼란스러워 보입니다. – cHao
코드를 올바르게 들여 씁니다. 현재 읽을 수 없습니다. –