Cスレで質問した所C++でしろとの叱責を戴きましてこちらで質問させていただきます。

int型データ3つの構造体があります
typedef struct{
  int iData1;
  int iData2;
  int iData3;
} t_ST;
この構造体が例えば10個あります
値はランダムな物が入ってます

それを、ソートするアルゴリズムを考えてるんだけどなかなかうまくいかない
ソート方法はiData1昇順→iData1昇順を保ったままiData2昇順→1,2保ったまま3昇順
例えば
{1,1,1} {2,1,1} {2,0,1} {1,1,3} {1,0,1}
と並んでたとしたら、結果的に
{1,0,1}
{1,1,1}
{1,1,3}
{2,0,1}
{2,1,1}
とソートする関数を実現するにはどうしたらよいでしょうか。

安定ソートを使って
1.iData3 でソート
2.iData2 でソート
3.iData1 でソート
としたらよいとの意見をいただきましたが、iData3でソートって指定の仕方はどうするんでしょうか?
deque<TEST>test();
stable_sort(test.begin(),〜〜,test.end());
だとは思うんですが〜〜に入る部分(もしくは全然違う?)が分かりません。