struct hoge
{
int x ;
int y ;
int z ;
}

という構造体をvectorにいれてソートしたいのですが、

vector<hoge> v ;

//いずれかのメンバで、降順か昇順かで、ソートしたい
sort(v.begin(), v,end(), ・・・) ;

メンバの数だけ関数オブジェクトを作るのがあまりにもあほらしいと思うのです。
もっとスマートな方法はありませんか?