Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
v_vide_shpor.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
276.8 Кб
Скачать

28.Екі жақты кезектер, стектер, тізімдер

STL контейнерлері тізбекті және ассоциативті деп бөлінеді. Тізбекті контейнерлер үздіксіз тізбек түріндегі бір типті объектілердің соңғы санын анықтауды қамтамасыз етеді және келесі түрлері бар: векторлар (vector); кезектер (queue ); екі жақты кезек\р(deque);тізім\р(list);стек\р(stack); приоритеттері бар кезектер (priority-queue).Тізбекті контейнер\р: вектор\р, екі жақты кезек, тізім\р.

deque – итераторды ұстайтын векторге тән кезек түрі. Соныман қатар ол тұрақты уақытта басына немесе соңына қою және өшіру операциясын да қолдайды; ал ортасынан қою және өшіруді сызықты уақыт кезінде. Вектордағы секілді жадыны басқару автоматты түржде орындалады.

// қою / өшіру:

void push_front(const T& x);

void push_back(const T& x);

iterator insert(iterator position, const T& x = T());

void insert(iterator position, size_type n, const T& x);

template <class InputIterator>

void insert(iterator position, InputIterator first, InputIterator last);

void pop_front();

void pop_back();

void erase(iterator position);

void erase(iterator first, iterator last);};

template <class T, class Allocator>

bool operator==(const deque<T, Allocator>& x, const deque<T, Allocator>& y);

template <class T, class Allocator>

bool operator<(const deque<T, Allocator>& x, const deque<T, Allocator>& y);

Стекstack») – тек бір элементпен жұмыс істейтін мәліметтер қоймасы. Жеке жағдайда, vector, list и deque. Стек («stack») қолдайтын операциялар

  • back –соңғы элементке ену

  • push_back – стектің соңына қосу

  • pop_back – соңғы элементті алу

list –2 жақты итераторды ұстайтынжәне кезектің кез келген жерінде тұрақты уақытта қою және өшіру операциясына мүмкінідк беретін кезек түрі. Жадысен жұмыс істеу автоматты түрде орындалады.

// қою/өшіру:

void push_front(const T& x);

void push_back(const T& x);

iterator insert(iterator position, const T& x = T());

void insert(iterator position, size_type n, const T& x);

template <class InputIterator>

void insert(iterator position, InputIterator first, InputIterator last);

void pop_front();

void pop_back();

void erase(iterator position);

void erase(iterator first, iterator last);

29. Ассоциативті контейнерлер. Сөздіктер. Жиындар.

STL (Standard Template Library) кітапханасына жатады

Контейнер – бұл белгілі бір түрде ұйымдастырылған басқа объектілер жиынын құрайтын объект, яғни нақты типті объект коллекцияларын басқару үшін арналған

STL контейнерлері

Тізбекті

векторлар (vector); тізімдер (list); екі жақты кезектер (deque); кезектер (queue ); стектер (stack); приоритеттері бар кезектер (priority-queue).

Ассоциативті

сөздіктер (map); жиын (set);көшірме сөздіктер (multimap);көшірме жиын (multiset); биттік жиындар (bitset).

Ассоциативті контейнерлер жылдам енуді қамтамасыз етеді, олар іздеу бұтағы негізінде тұрғызылады. Сөздік қос мән негізінде тұрғызылған, алғашқысы – элементтер идентификаторына арналған түйін, екіншісі- элементтің өзі. Мысалы: ағылшын-орыс сөздігінде түйін- ағылшын сөзі, ал элемент –орыс сөзі.Ассоциативті контейнерлер <map>, <set>тақырыптық файлдарда сипатталады.pair шаблонының екі параметрі бар, бірінші -first, екінші –second.Екі конструктор анықтылған: бірі элементтерді инициализациялау үшін, ал екіншісі көшіру конструкторы.Үндеместік бойынша конструкторы жоқ, яғни объектіні құру кезінде мәнге меншіктеу керек.Сөздіктер (map) барлық түйіндер ерекше болуы керек. Сөздіктегі элементер сұрыпталған түрде сақталынады, сондықтан түйіндер “кіші” қатынасымен анықталады. Сөздік шаблоны үш параметрден тұрады: түйін типі, элементтипі, функционалды объектнің типі (“кіші” қатынасымен анықтаушы): Түйін бойынша элементке ену үшін [ ] операциясы анықталған: T&operator [] (const Key&x); Бұл операцияның көмегімен элементтер мәндерін ғана алып қоймай, сонымен қатар сөздікке жаңасын да қосуға болады. Мысалы: Телефон кітапшасын қарастырайық, түйіні– аты-жөні, элементі- телефон нөмірі.

#include <fstream>

#include <iostream>

#include <string>

#include <map>

using namespace std;

typedef map <string, long, less <string>> map_s1;

int main ()

{map_s1 m1;

ifstream in (“phonebook”);

string str;

long num;

while (in>>num, !ineof ())

{

in. get (); // бос орынды қалдыру

getline (in, str); // аты-жөнін оқу

m1[str]=num; // сөздікке енгізу

cout<<str<<” “<<num<<endl;

}

m1[“Asel”]=2234242; // сөздікті толықтыру

map_s1:: iterator i;

cout<<”m1: “<<endl; // сөздікті шығару

for (i=m1.begin(); i!=m1.end();i++)

cout<<(*i).first<<" "<<(*i).second<<endl;

i=m1.begin();i++; //екінші элементті шығару

cout<<" 2-shi elementti shygaru: ";

cout<<(*i).first<<" "<<(*i).second<<endl;

cout<<" Aset"<<m1["Aset"]<<endl; // түйін бойынша элементті шығару

return 0; }

Сөздік:

2434343 Temirlan

2393939 Anuar

2555555 Asem

2445566 Aset

Нәтижесі:

m1: Anuar 2393939

Asel 2234242

Asem 2555555

Aset 2445566

Temirlan 2434343

Екінші элемент: Asel 2234242

Aset 2445566

Сөздіктегі элементтерді іздеу үшін төмендегі функциялар анықталған:

iterator find (const key_type&x);

const_iterator find (const key_type&x) const;

const_iterator lower(const key_type&x) const;

const_iterator upper (const key_type&x) const;

size_type count (const key_type&x) const);

Элементтерді қосу және жою үшін мына функциялар анықталған:

pair <iterator, bool> insert (const value_type&x);

iterator insert (iterator position, const value_type&x);

template < class InputIter>

void insert

void erase

void clear ();

ЖИЫН — тұтас түрде қарастырылатын кез келген бір типті элементтер жиынтығы. Ол күрделі типті деректердің бірі. Деректер, элементтерінің саны 255-тен аспайтын, Real және Pointer-ден басқа кез келген жай типті болуы мүмкін. Элементтерінің орналасу ретін өзгерту міңдетті емес. Жиын SЕТ операторы арқылы сипатталады (SET— орналастыру): SЕТ оf <жиын элементтерінің типі>

Мысалы: tуре JN = sеt оf 1..40; vаr МN : JN; J1 : set оf Вооlеаn; J2 : sеt оf ‘А’.. ‘Т’; Мұндағы JN — жиын типінің аты; JN типті МN айнымалысының элементтері 1..40 аралығындағы кез келген бүтін сандар; J1 жиынының нәтижесі тек ТRUЕ не FALSЕ мәндерінің бірінен тұрады, т.с.с. Жиын элементтері тік жақшаларға алынып, үтір арқылы бөлініп жазылады. Мысалы: аі := [4,18,12]; а2 := [' а ' , ' b', ' f ']; а3 := [truе]; а4 :=[ ]; Элементсіз жиын бос жиын деп аталады. Оның жазылуы — [ ]. Жиын элементі үшін айнымалыны не өрнекті алу да мүмкін. Ескерту. Жиындағы бірнеше аттас элементтер бір элемент деп есептеледі. Мысалы: [2, 3, 5, 3, 3, 5] = [2, 3, 5|. Элементтің жиынға тиістілігін анықтайтын қызметші сөз — IN(іn — тиісті (да, де жатыс септігінің жалғауы). Жиындармен тек мынадай әрекеттерді орындауға болады: - біріктіру (+); - киылысын табу ( * ); - айырмасын табу ( — ); - салыстыру; - элементтің жиынға тиістісін анықтау (IN). Біріктірілген жиын — екі жиынның барлық элементтерінен тұратын жиын. Мысалы, [3, 5, 9] + [7, 9] = [3, 5, 9, 7]. Екі жиынның қиылысы — екі жиында да бар элементтерден тұратын жиын. Мысалы, [3, 5, 9, 4] * [7, 9, 5] = [5, 9]. Екі жиынның айырмасы — біріншісінің соңғысында жоқ элементтерінен тұратын жиын. Мысалы, [3, 5, 9] — [7, 9]=[3, 5]. Екі жиын <, >, <=, >=, < >, = салыстыру таңбаларының бірі арқылы салыстырылады. Нәтижесі — Тruе не Falsе. Мысалы: [5, 2, 8]<>[5, 3, 8] орнегінің мәні — Truе. 1-мысал. [3, 5, 8, 9] жиыны берілген. 5, 6 элементтері жиынға тиісті ме? Тексеруге арналған программа: Vаr а: set 1..9; t1,t2 : boolean; Веgin а:=[3, 5, 8, 9]; t1:=5 іn а; t2:=6 in а; Writeln(t1); Writeln (t2) Еnd. {t1 — truе; t2 — falе} 2-мысал. а=[1, 3, 6, 9, 8]; b=[3, 5, 9]. а — b жиынының элементтерін анықтау программасын құрыңыз. vаr а,b,с : set of 1..10; к : іnteger; begin а:=[1, 3, 6, 9, 8]; b:=[3, 5, 9]; с:=а — b; For к:=1 tо 10 do Іf к іn с then write(к : 5) еnd.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]