【デッドロックアルゴリズム・スタックとキュー】デュアルスタック並べ替え問題


タイトルの要求:1つのスタックの要素のタイプは整数型で、今このスタックを最上位から小ソート(vectorの最初の要素はスタックの最上位)にしたいのですが、1つのスタックしか申請できません.それ以外に新しい変数を申請することができますが、追加のデータ構造を申請することはできません.どのようにソートを完了しますか?
構想:元のスタックをstackとし、申請した補助スタックをhelpとし、helpをトップダウンから小から大へ並べ替えると、helpをstackに注ぎ込み、stackトップダウンから大から小へ並べ替えることができる.
スタックトップ要素をstackからポップアップし、currentとしてマークします.
currentがhelpに等しいスタックトップ要素より小さい場合、currentはhelpに押し込まれます.
currentがhelpのスタックトップ要素より大きい場合は、currentがhelpのスタックトップ要素以下になるまで、helpの要素をstackにポップアップします.
stackの要素がすべてhelpに移行するまで、helpのスタック要素をstackに1つずつ押し返せばよい.
この問題はvectorでstackを実現する、vectorの最初の要素がスタックトップである、戻るvectorにおいてvector[0]が最大値である、出願の補助vectorにおいてvector[0]が最小値であるべきである.
だからhelpベクトルでvector[0]...vector[length-1]を小さいものから大きいものに並べ替える.
numbersベクトルのnumbers[0]...numbers[lenght-1]を大きくから小さく並べ替えます.
class TwoStacks {
public:// vector     
    vector twoStacksSort(vector numbers) {
        // write code here
        vector help;
        while(!numbers.empty()){
             int current = numbers.back();
             numbers.pop_back();
             if(help.empty())
                 help.push_back(current);
             else{
                 if(current>=help.back())
                     help.push_back(current);
                 else{
                     while(!help.empty()&& current