【发布时间】:2014-01-10 17:07:07
【问题描述】:
我正在使用
typedef pair < long , pair <bool ,long > > t;
vector <t> time ;
我需要使用std::sort() 函数对上述向量进行排序,但需要使用自定义的比较函数。我写了它的一个版本,但不能正常工作。你能指出我的错误吗?
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) ;
}
自定义案例:
排序前:向量时间
10 1 1
100 0 1
100 1 2
200 0 2
150 1 2
500 0 2
200 1 2
300 0 2
排序后:
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比另一个“少”。代码似乎对这个问题有点困惑。 -
请正确缩进你的代码,目前不可读。