Бүгүнкү күндө колдонмо программалоодо кеңири колдонулуп жаткан маалымат структураларынын бири бул стек. Анын өзгөчөлүгү - элементтерди уюштуруу принциби, анда аларды кошуу жана алып салуу бир эле учурда жана "чоку" аркылуу гана мүмкүн болот, башкача айтканда, ЛИФО принцибине ылайык. Бирок кээде бир эле учурда бүт стекти тазалоо керек болот.
Зарыл
- - тексттик редактор же IDE;
- - колдонулган программалоо тилинен котормочу.
Нускамалар
1 кадам
Стек объектилеринде стекти тазалоо үчүн атайын иштелип чыккан ыкмаларды колдонуңуз. Алар ар кандай китепканалардын жана алкактардын тиешелүү класстарынын көпчүлүгүндө бар. Мисалы. NET Stack классында Clear методу бар. Анын C # колдонулушунун мисалы төмөнкүдөй болушу мүмкүн:
Stack oStack = жаңы Stack (); // стек объектисин түзүү
oStack. Push ("000"); // толтуруу
oStack. Push ("111");
oStack. Clear (); // стекти тазалоо
2-кадам
Стек класстарынын функционалдуулугу көп курулган контейнер класстарынын элементтеринин санын өзгөртүү ыкмаларын тазалоо үчүн да колдонсо болот. Сиз жөн гана учурдагы элементтердин санын нөлгө чейин азайтуу керек. Мисалы, Qt шаблон классы 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:: стек
5-кадам
Тийиштүү ыкмаларды колдонуп, бардык элементтерди ырааттуу алуу менен, стекти тазалоого болот:
std:: stack <int, std:: list> oStack; // стек объектисинин декларациясы
for (int i = 0; i <10; i ++) oStack.push (i); // толтуруу
while (! oStack.empty ()) oStack.pop (); // стекти тазалоо
Бирок, бул ыкма убакыттын татаалдыгына ээ, ал сызыктуу түрдө стектеги элементтердин санына көз каранды. Демек, аны пайдалануу акылга сыярлык эмес.