Qanday Qilib To'plamni Tozalash Kerak

Qanday Qilib To'plamni Tozalash Kerak
Qanday Qilib To'plamni Tozalash Kerak

Mundarija:

Anonim

Bugungi kunda amaliy dasturlashda keng qo'llaniladigan ma'lumotlar tuzilmalarining turlaridan biri bu stek. Uning o'ziga xos xususiyati - bu elementlarni tashkil qilish printsipi, unda ularni qo'shish va olib tashlash faqat bir vaqtning o'zida va faqat "yuqori" orqali, ya'ni LIFO printsipiga muvofiq amalga oshiriladi. Ammo ba'zida bir vaqtning o'zida butun to'plamni tozalash kerak bo'ladi.

Qanday qilib to'plamni tozalash kerak
Qanday qilib to'plamni tozalash kerak

Kerakli

  • - matn muharriri yoki IDE;
  • - ishlatilgan dasturlash tilidan tarjimon.

Ko'rsatmalar

1-qadam

Stakni tozalash uchun maxsus ishlab chiqilgan stack ob'ektlarida usullardan foydalaning. Ular turli kutubxonalar va ramkalarning tegishli sinflarining ko'pchiligida mavjud. Masalan. NET Stack sinfida Clear usuli mavjud. C # dasturidagi misol quyidagi ko'rinishga ega bo'lishi mumkin:

Stack oStack = yangi Stack (); // stack ob'ektini yaratish

oStack. Push ("000"); // to'plamni to'ldiring

oStack. Push ("111");

oStack. Clear (); // to'plamni tozalash

2-qadam

Stek sinflarining funktsional imkoniyatlari tez-tez quriladigan konteyner sinflari elementlari sonini o'zgartirish usullari ham tozalash uchun ishlatilishi mumkin. Siz faqat joriy elementlarning sonini nolga kamaytirishingiz kerak. Masalan, QSt shablonlari klassi QStack QVector shablon sinfidan meros qilib oladi, bu o'lchamlarni o'zgartirish uslubiga ega. Uni ishlatishning misoli quyidagicha bo'lishi mumkin:

QStack oStack; // stack ob'ektining deklaratsiyasi

for (int i = 0; i <10; i ++) oStack.push (i); // to'plamni to'ldiring

oStack.resize (0); // to'plamni tozalash

3-qadam

Stek ob'ektini tozalash odatda tegishli sinflarda tez-tez bajariladigan tayinlash operatori orqali amalga oshirilishi mumkin. Buning uchun stekning tozalanadigan ob'ektiga sukut bo'yicha konstruktor tomonidan yaratilgan vaqtinchalik ob'ekt berilishi kerak. Masalan, konteyner shablonlari uchun adapter bo'lgan C ++ Standard Library stack andozalar sinfida raqamni o'zboshimchalik bilan o'zgartirish yoki barcha elementlarni olib tashlash usullari mavjud emas. Siz buni quyidagicha tozalashingiz mumkin:

std:: stack <int, std:: list> oStack; // stack ob'ektining deklaratsiyasi

for (int i = 0; i <10; i ++) oStack.push (i); // to'plamni to'ldiring

oStack = std:: stack(); // to'plamni tozalas

4-qadam

Standart operator tomonidan yaratilgan ob'ekt argumenti bilan yangi operator yordamida nusxa ko'chirish konstruktorini chaqirish orqali stack ob'ektini tozalang:

std:: stack <int, std:: list> oStack; // stack ob'ektining deklaratsiyasi

for (int i = 0; i <10; i ++) oStack.push (i); // to'plamni to'ldiring

yangi std:: stack(oStack); // to'plamni tozalas

5-qadam

Tegishli usullardan foydalangan holda barcha elementlarni ketma-ket olish orqali to'plamni tozalash mumkin:

std:: stack <int, std:: list> oStack; // stack ob'ektining deklaratsiyasi

for (int i = 0; i <10; i ++) oStack.push (i); // to'plamni to'ldiring

while (! oStack.empty ()) oStack.pop (); // to'plamni tozalash

Biroq, bu yondashuv vaqt murakkabligiga ega, bu chiziqli ravishda stekdagi elementlar soniga bog'liq. Shuning uchun uni ishlatish oqilona emas.

Tavsiya: