Стекті қалай тазартуға болады

Мазмұны:

Стекті қалай тазартуға болады
Стекті қалай тазартуға болады

Бейне: Стекті қалай тазартуға болады

Бейне: Стекті қалай тазартуға болады
Бейне: Қалай күміс бұйымдарды тазартуға болады? І Лайфхактар 2024, Қараша
Anonim

Қазіргі кезде қолданбалы бағдарламалауда кеңінен қолданылатын мәліметтер құрылымының бір түрі - стек. Оның ерекшелігі - элементтерді ұйымдастыру принципі, онда оларды қосу және алып тастау тек бір уақытта және тек «жоғарғы» арқылы, яғни ЛИФО қағидасына сәйкес мүмкін болады. Бірақ кейде бүкіл стекті бірден тазарту қажет болады.

Стекті қалай тазартуға болады
Стекті қалай тазартуға болады

Қажетті

  • - мәтіндік редактор немесе IDE;
  • - қолданылған бағдарламалау тілінен аудармашы.

Нұсқаулық

1-қадам

Стек нысандарында стекті тазарту үшін арнайы жасалған әдістерді қолданыңыз. Олар әр түрлі кітапханалар мен құрылымдардың тиісті сыныптарының көпшілігінде бар. Мысалы. NET Stack сыныбында Clear әдісі бар. Оны C # -де қолдану мысалы келесідей болуы мүмкін:

Stack oStack = жаңа Stack (); // стек нысанын құру

oStack. Push («000»); // стекті толтыру

oStack. Push («111»);

oStack. Clear (); // стекті тазарту

2-қадам

Тазарту үшін стек кластарының функционалдылығы жиі құрастырылатын контейнер кластарының элементтерінің санын өзгерту әдістері де қолданыла алады. Тек элементтердің ағымдағы санын нөлге дейін азайту керек. Мысалы, QSt шаблон сыныбы QStack QVector шаблон сыныбынан алады, оның өлшемін өзгерту әдісі бар. Оны қолданудың мысалы келесідей болуы мүмкін:

QStack oStack; // стек объектісінің декларациясы

for (int i = 0; i <10; i ++) oStack.push (i); // стекті толтыру

oStack.resize (0); // стекті тазарту

3-қадам

Стек нысанын тазалауды көбінесе тиісті кластарда жүзеге асырылатын тағайындау операторы арқылы жүзеге асыруға болады. Ол үшін стектің тазаланатын объектісіне әдепкі конструктор жасаған уақытша объект тағайындалуы керек. Мысалы, контейнерлік шаблон кластары үшін адаптер болып табылатын C ++ Standard Library стек шаблондарының класында санды ерікті өзгерту немесе барлық элементтерді жою әдістері жоқ. Сіз оны келесідей тазалай аласыз:

std:: stack <int, std:: list> oStack; // стек объектісінің декларациясы

for (int i = 0; i <10; i ++) oStack.push (i); // стекті толтыру

oStack = std:: stack(); // стекті тазарт

4-қадам

Стек объектісін әдепкі конструктор жасаған объект аргументімен жаңа оператордың көмегімен көшірме конструкторын шақыру арқылы тазалаңыз:

std:: stack <int, std:: list> oStack; // стек объектісінің декларациясы

for (int i = 0; i <10; i ++) oStack.push (i); // стекті толтыру

жаңа std:: стек(oStack); // стекті тазарт

5-қадам

Тиісті әдістерді пайдаланып барлық элементтерді дәйекті түрде алу арқылы стекті тазартуға болады:

std:: stack <int, std:: list> oStack; // стек объектісінің декларациясы

for (int i = 0; i <10; i ++) oStack.push (i); // стекті толтыру

while (! oStack.empty ()) oStack.pop (); // дестені тазарту

Алайда, бұл тәсіл уақыт бойынша күрделілікке ие, ол сызықтық түрде стектегі элементтердің санына байланысты болады. Сондықтан оны пайдалану ұтымды емес.

Ұсынылған: