Өнөө үед хэрэглээний програмчлалд өргөн хэрэглэгддэг өгөгдлийн бүтцийн нэг төрөл бол стек юм. Түүний өвөрмөц байдал нь элементүүдийг зохион байгуулах зарчим бөгөөд тэдгээрийг нэмэх, зайлуулах нь зөвхөн нэг удаа, зөвхөн "дээд" -ээр дамжуулан, өөрөөр хэлбэл LIFO зарчмын дагуу хийгддэг. Гэхдээ заримдаа бүхэл бүтэн стекийг нэг дор цэвэрлэх шаардлагатай болдог.
Шаардлагатай
- - текст засварлагч эсвэл IDE;
- - ашигласан програмчлалын хэлнээс орчуулагч.
Зааварчилгаа
1-р алхам
Стекийг цэвэрлэхэд зориулагдсан стек объектууд дээр аргыг ашигла. Эдгээр нь янз бүрийн номын сан, хүрээний харгалзах ихэнх ангиудад байдаг. Жишээлбэл. NET Stack анги нь Clear аргатай байдаг. C # програмын хэрэглээний жишээ нь дараах байдалтай байж магадгүй юм.
Stack oStack = new 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 (); // стекийг цэвэрлэ
Гэсэн хэдий ч энэ арга нь стек дэх элементийн тооноос шууд хамааралтай байх хугацааны нарийн төвөгтэй байдаг. Тиймээс түүний хэрэглээ нь оновчтой биш юм.