Скачиваний:
6
Добавлен:
20.05.2024
Размер:
219.13 Кб
Скачать

4-Lekciya. Konteyner adapterleri. Stack, queue, priority_queue. Konteynerler menen islew algoritmleri.

Jobası:

1.Konteyner adapterleri

2.stack adapteri

3.queue adapteri

4.priority_queue adapteri

Konteyner adapteri izbe-iz hám associativ konteynerler, eger konteyner klassları obyektlerdi jumıs waqtında nátiyjeli saqlaw hám alıwdıń ápiwayı mashqalasın sheshiwi kerek bolsa, jetkilikli edi. Biraq, biz tekǵana elementlerdi nátiyjeli saqlaw, al elementlerdi saqlap hám alıw processinde ayırım sheklewlerdi qóyatuǵın basqa túrdegi konteynerlergede mútáj ekenligimizdi túsiniń. Bul túrdegi konteynerler konteyner adapterleri dep ataladı. C ++ standart kitapxanası elementlerdi saqlaw hám alıw processinde sheklewlerdi qóyatuǵın konteyner retinde stack, queue hám priority_queue sıyaqlı klass shablonların ámelge asıradı.

Konteyner adapteriniń dástúrli ózgesheligi sonda, ol birinshi dárejeli, konteynerge uqsas izbe-izlik hám associativ konteynerler emes, yaǵnıy elementler tek saqlaw hám alıw ushın saqlanatuǵın haqıyqıy maǵlıwmatlar dúzilisin támiyinlemeydi. ol iteratorlardi qollap -quwatlamaydi. Adapter konteyner klassları uyqas túrde elementti saqlaw hám alıw ushın push hám pop sıyaqlı funksiyalardı támiyinleydi.

Stack adapteri Stack dep atalǵan klass stack maǵlıwmatlar strukturasınıń ámelge asırılıwı bolıp, ol jaǵdayda elementlerdi qosıw hám alıw LIFO (eń aqırǵı birinshi shıǵıw ) usılında ámelge asırıladı. Konteynerdi elementler kompleksi dep oyda sawlelendirgende, ol jaǵdayda birinshi qosılǵan element tómengi bólekte hám aqırǵı qosılǵan element stacktıń joqarı bóleginde boladı. Tómengi element mudamı stacktan birinshi bolıp alınadı. Stacktı vektor, dizim yamasa deque sıyaqlı izbeizlik konteyneri menen ámelge asırıw múmkin. Biraq, C ++ te stack úlgi boyınsha deque retinde ámelge asırıladı. Stacktıń joqarı bóleginde element qosıw ushın push hám joqarı bóleginen elementti alıp taslaw ushın pop sıyaqlı tiykarǵı operaciyalar bar. Stacktaǵı joqarı elementtiń járiyalanıwın alatuǵın basqa usıl da bar. Bul operaciya stack bos yamasa bántliligin anıqlaydı hám stack-taǵı elementler sanın aladı.

Mısal:

#include <iostream> #include <stack> #include <string>

using namespace std;

int main()

{

stack<string> weekdays; weekdays.push("Shembi");

weekdays.push("Juma");

weekdays.push("Piyshembi");

weekdays.push("Sárshembi");

weekdays.push("Shiyshembi");

weekdays.push("Dúyshembi");

weekdays.push("Ekshembi");

cout<<"Size of the stack: "<<weekdays.size()<<endl;

while(!weekdays.empty()) { cout<<weekdays.top()<<endl; weekdays.pop();

}

return 0;

}

Queue adapteri

Queue klasınıń saqlaw hám alıw sheklewleri, mısalı, kino biletin satıp alıw ushın náwbette turǵan adamlarǵa uqsaydı. Bul FIFO maǵlıwmatlar strukturasınıń ámelge asırılıwı bolıp, ol jaǵdayda birinshi bolǵan element náwbetten alıp taslanǵan birinshi element bolıp tabıladı. Bul elementlerdi saqlawdıń arqa bóleginde kirgiziw hám aldınan alıp taslawdı múmkinshilik beredi. Queue elementlerdi izbe-izlik konteyner dizimi yamasa deque maǵlıwmatlar strukturasında saqlawı múmkin. Tiykarǵı operaciyalar elementlerdi queuetiń arqa bóleginde kirgiziw hám elementlerdi queueniń aldıńǵı bóleginen alıp taslaw bolıp tabıladı. Jıynaqtan ayrıqsha bolıp esaplanıw, queue birinshi elementlerdiń málimlemesin alıw ushın aldıńǵı hám aqırǵı elementtiń málimlemesin alıw ushın arqa sıyaqlı usıllardan paydalanadı. Usıl queue bos yamasa bántliligin anıqlaydı hám náwbettegi elementler sanın aladı.

Mısal:

#include <iostream> #include <queue> #include <string>

using namespace std;

int main()

{

queue<string> weekdays;

weekdays.push("Shembi");

weekdays.push("Juma");

weekdays.push("Piyshembi"); weekdays.push("Sárshembi"); weekdays.push("Shiyshembi"); weekdays.push("Dúyshembi"); weekdays.push("Ekshembi");

cout<<"Size of the stack: "<<weekdays.size()<<endl;

while(!weekdays.empty()) { cout<<weekdays.front()<<endl; weekdays.pop();

}

return 0;

}

priority_queue adapteri

Priority_queue adapter klası biraz parıq etedi, sebebi ol maǵlıwmatlar quramına elementlerdi saralap qoyıwǵa múmkinshilik beredi hám elementlerdi alıp taslaw kútilip atırǵan qatardıń aldıńǵı bóleginen ámelge asırıladı. Priority_queue standart túrde vektordı tiykarǵı maǵlıwmatlar dúzilisi retinde isletedi. Atınan kórinip turıptı, olda, elementler baǵanada turatuǵın tártibi boyınsha qoyıladı. Mısalı, eń joqarı baǵanada turatuǵınlıq, mısalı, eń úlken nomer náwbetten alıp taslanatuǵın birinshi element boladı. Elementlerdi tártipke salıw, ádetde, eń úlken element kutilip atırǵan qatardıń joqarı bóleginde bolǵan jıynaq -sort algoritmı járdeminde ámelge asırıladı. Arnawlı obyektti de náwbette arnawlı salıstırıwlar funkciyası obyekti menen saqlaw múmkin, sebebi ol standart boyınsha elementlerdi salıstırıw hám tártipke salıw ushın bir obyektti isletedi. Tiykarǵı operaciyalar elementlerdi pop-up tiń tiyisli ornında qosıw hám baǵana turatuǵın usıllarınan eń joqarı baǵana elementlerin alıp taslaw bolıp tabıladı.

Mısal:

#include <iostream> #include <queue> #include <string>

using namespace std;

int main()

{

priority_queue<int> nums;

nums.push(9);

nums.push(2);

nums.push(7);

nums.push(1);

nums.push(4);

cout<<"Size of the stack: "<<nums.size()<<endl;

while(!nums.empty()) { cout<<nums.top()<<endl; nums.pop();

}

return 0;

}

Baqlaw sorawları:

1.Konteyner adapterleri degenimiz ne?

2.stack adapteri haqqında mısallar keltiriń?

3.queue adapteri degenimiz, mısal keltiriń?

4.priority_queue adapteri dep nege aytamız?

Соседние файлы в предмете Объектно ориентированное программирование