- •4. Идентификаторлар. Түйінді сөздер. Тұрақтылар.
- •5. Функцияларды хабарлау және анықтау. Функцияның параметрлері. Рекурсивті функциялар.
- •6. Негізгі мәліметтер типтері. Унарлы, бинарлы, тернарлы операциялар.
- •7.Программа құрылымы. Айнымалылар және өрнектер.
- •8. If, switch тармақталу операторлары. Шартты оператордың құрылымдық сұлбасы.
- •9.For, do while, while циклдік операторлары.
- •10. Goto, Break, continue, return басқаруды беру операторлары
- •11.Нұсқауыштар мен жиымдар. Екі өлшемді жиымдар.
- •Int ivar,*iptr;
- •12. Қатарлар. Қатарларға қолданылатын функциялар
- •13. Typedef, enum қолданушы анықтайтын мәліметтер типтері.
- •14. Struct, union қолданушы анықтайтын мәліметтер типтері.
- •16. Объектіге бағытталған программалаудың негізі. Базалық кластың хабарлануы, анықталуы.
- •17. Конструктор және оның қасиеттері. Көшіру конструкторлары.
- •18. Конструкторлар және қатарларды меншіктеу. Қатардың бөлігін қосу және меншіктеу функциялары.
- •19.Конструкторлар.Қатарларды түрлендіру, қатардың құрамын іздеу
- •22. Мұрагерлік. Жай және көптік мұрагерлік.
- •23. Абстрактілі класс. Виртуалды функциялар.
- •24. Ағымдар. Стандартты, файлдық және қатарлық ағымдар.
- •25. Манипуляторлар. Жай және параметрлі манипуляторлар
- •26. Stl (Standard Template Library) кітапханасының құрылымы. Итераторлар.
- •27. Тізбекті контейнерлер. Векторлар, кезектер.
- •28.Екі жақты кезектер, стектер, тізімдер
- •29. Ассоциативті контейнерлер. Сөздіктер. Жиындар.
- •30. Stl (Standard Template Library) кітапханасының құрылымы
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.
