Üks tüüpi andmestruktuure, mida tänapäeval rakenduste programmeerimisel laialdaselt kasutatakse, on virn. Selle eripära on elementide korrastamise põhimõte, kus nende lisamine ja eemaldamine on võimalik ainult ükshaaval ja ainult läbi "tipu", see tähendab vastavalt LIFO põhimõttele. Kuid mõnikord on vaja kogu pinu korraga tühjendada.
Vajalik
- - tekstiredaktor või IDE;
- - tõlk kasutatud programmeerimiskeelest.
Juhised
Samm 1
Kasutage virnaobjektidel meetodeid, mis on spetsiaalselt ette nähtud virna puhastamiseks. Neid leidub enamikus erinevate raamatukogude ja raamistike vastavates klassides. Näiteks. NET Stacki klassil on Clear-meetod. Selle rakenduse näide C #-s võib välja näha järgmine:
Virna oStack = uus virna (); // loo korstnaobjekt
oStack. Push ("000"); // täitke virn
oStack. Push ("111");
oStack. Clear (); // korstna puhastamine
2. samm
Puhastamiseks võib kasutada ka konteineriklasside elementide arvu muutmise meetodeid, millele sageli on virnaklasside funktsionaalsus üles ehitatud. Peate lihtsalt praeguse elementide arvu nulli vähendama. Näiteks Qt malliklass QStack pärib QVectori malliklassist, millel on suuruse muutmise meetod. Selle kasutamise näide võib olla selline:
QStack oStack; // korstnaobjekti deklaratsioon
jaoks (int i = 0; i <10; i ++) oStack.push (i); // täitke virn
oStack.resize (0); // korstna puhastamine
3. samm
Virnaobjekti saab puhastada tavaliselt määramisoperaatori kaudu, mis on sageli rakendatud vastavatesse klassidesse. Selleks tuleb puhastatava virna objektile määrata vaikekonstruktori loodud ajutine objekt. Näiteks pole C ++ Standard Library virnamalliklassis, mis on konteinerimalliklasside adapter, meetodeid numbri suvaliseks muutmiseks või kõigi elementide eemaldamiseks. Saate selle tühjendada järgmiselt:
std:: stack <int, std:: list> oStack; // korstnaobjekti deklaratsioon
jaoks (int i = 0; i <10; i ++) oStack.push (i); // täitke virn
oStack = std:: stack
4. samm
Tühjendage korstnaobjekt, helistades koopiaehitajale uue operaatori abil vaikekonstruktori loodud objektiargumendiga:
std:: stack <int, std:: list> oStack; // korstnaobjekti deklaratsioon
jaoks (int i = 0; i <10; i ++) oStack.push (i); // täitke virn
uus standard: virn
5. samm
Virna saab kustutada, hankides järjestikku kõik elemendid, kasutades sobivaid meetodeid:
std:: stack <int, std:: list> oStack; // korstnaobjekti deklaratsioon
jaoks (int i = 0; i <10; i ++) oStack.push (i); // täitke virn
while (! oStack.empty ()) oStack.pop (); // puhastage virn
Kuid sellel lähenemisel on ajaline keerukus, mis sõltub lineaarselt virna elementide arvust. Seetõttu pole selle kasutamine ratsionaalne.