Տվյալների կառուցվածքների տեսակներից մեկը, որն այսօր լայնորեն օգտագործվում է կիրառական ծրագրավորման մեջ, բուրգն է: Դրա առանձնահատկությունը տարրերի կազմակերպման սկզբունքն է, որում դրանց ավելացումը և հեռացումը հնարավոր է միանգամից միայն մեկ և միայն «վերևի» միջոցով, այսինքն `համաձայն LIFO սկզբունքի: Բայց երբեմն անհրաժեշտ է միանգամից մաքրել ամբողջ դեղը:
Անհրաժեշտ է
- - տեքստի խմբագիր կամ IDE;
- - օգտագործված ծրագրավորման լեզվից թարգմանիչ:
Հրահանգներ
Քայլ 1
Դեղի օբյեկտների վրա օգտագործեք մեթոդներ, որոնք հատուկ նախագծված են տուփը մաքրելու համար: Դրանք առկա են տարբեր գրադարանների և շրջանակների համապատասխան դասերի մեծ մասում: Օրինակ,. NET Stack դասը ունի հստակ մեթոդ: C # - ում դրա կիրառման օրինակը կարող է նման լինել հետևյալով.
Stack oStack = նոր Stack (); // ստեղծել stack օբյեկտ
oStack. Push («000»); // լցնել բուրգը
oStack. Push («111»);
oStack. Clear (); // մաքրել բուրգը
Քայլ 2
Մաքրման համար կարող են օգտագործվել նաև տարաների դասերի տարրերի քանակի փոփոխման մեթոդները, որոնց վրա հաճախ կառուցված են բուրգերի դասերի ֆունկցիոնալությունը: Պարզապես անհրաժեշտ է տարրերի ներկայիս քանակը հասցնել զրոյի: Օրինակ, Qt կաղապարի դասը QStack ժառանգում է QVector կաղապարի դասից, որն ունի չափափոխման մեթոդ: Դրա օգտագործման օրինակ կարող է լինել այսպիսին.
QStack oStack; // դեղի օբյեկտի հայտարարում
համար (int i = 0; i <10; i ++) oStack.push (i); // լցնել բուրգը
oStack.resize (0); // մաքրել բուրգը
Քայլ 3
Դեղ օբյեկտի մաքրումը սովորաբար կարող է կատարվել նշանակման օպերատորի միջոցով, որը հաճախ իրականացվում է համապատասխան դասարաններում: Դա անելու համար մաքրման ենթակա դեղի օբյեկտին պետք է նշանակվի ժամանակավոր օբյեկտ, որը ստեղծվել է լռելյայն կոնստրուկտորի կողմից: Օրինակ, C ++ Standard Library stack templates դասը, որը կոնտեյներների ձևավորված դասերի ադապտեր է, չունի համարը կամայականորեն փոխելու կամ բոլոր տարրերը հեռացնելու մեթոդներ: Կարող եք մաքրել այսպես.
std:: stack <int, std:: list> oStack; // դեղի օբյեկտի հայտարարում
համար (int i = 0; i <10; i ++) oStack.push (i); // լցնել բուրգը
oStack = std:: բուրգ
Քայլ 4
Մաքրել բույսի օբյեկտը `զանգահարելով կրկնօրինակման կոնստրուկտորին` օգտագործելով նոր օպերատոր `լռելյայն կոնստրուկտորի կողմից ստեղծված օբյեկտի արգումենտով.
std:: stack <int, std:: list> oStack; // դեղի օբյեկտի հայտարարում
համար (int i = 0; i <10; i ++) oStack.push (i); // լցնել բուրգը
նոր std:: բուրգ
Քայլ 5
Բուրգը կարող է մաքրվել `հետևաբար բոլոր տարրերը հետ վերցնելով համապատասխան մեթոդներով.
std:: stack <int, std:: list> oStack; // դեղի օբյեկտի հայտարարում
համար (int i = 0; i <10; i ++) oStack.push (i); // լցնել բուրգը
while (! oStack.empty ()) oStack.pop (); // մաքրել բուրգը
Այնուամենայնիվ, այս մոտեցումն ունի ժամանակի բարդություն, որը գծայինորեն կախված է տուփի տարրերի քանակից: Հետեւաբար, դրա օգտագործումը ռացիոնալ չէ: