9. labaratoriya jumisi. Stl komponentalar va konteynerlar menen tanisiw. Shablonlar standart kitabxananin’ du’zilisi
Download 388.32 Kb.
|
6-ámeliy
- Bu sahifa navigatsiya:
- Konteynerler bul ne
9. LABARATORIYA JUMISI. STL komponentalar va konteynerlar menen tanisiw. Shablonlar standart kitabxananin’ du’zilisi. Jumistin' maqseti: STL komponentalar hám konteynerlarin úyreniw hám olardı izertlew . Qoyılǵan másele: Shablonlar standart kitapxanasınıń strukturası, algoritmlar, iteratorlar, konteynerlar haqqında teoriyalıq bilimdi ıyelew. Jumıs rejimi: Tájiriybe jumısı teoriyalıq maǵlıwmatların úyreniw; Berilgen tapsırmanıń algoritmın islep shıǵıw; C++ programmalastırıw ortalıǵında programmanı jaratıw; Nátiyjelerdi tekseriw; Esabattı tayarlaw hám tapsırıw. STL (Standart Template Library) Standart shablonlar kitapxanası - C++ shablon klasınıń kompleksi bolıp, programmalastırıwdıń umuniy struktura hámfunksiyaların óz ishine aladı. Mısalı dizim, stack, dızbek hám basqalar. Bul klasslar, algoritmlar hám konteynerlar iteratorlarining kitapxanası esaplanadıyu C++ STL 3ta komponentke iye: -Algoritmlar -Konteynerlar -Iteratorlar Algoritm Algoritm bası belgili aralıq elementlerine qóllaw ushın mólsherlengen arnawlı funksiyalar kompleksine iye. Bulfunksiyalar konteynerga isletiledi hám konteyner quramı ushın hár qıylı operatsiyalardı orınlawı qurallarını usınıs etedi. Algoritm ne ete aladı? Konteynerler bul ne ? Konteynerlar yamasa klass konteynerlari maǵlıwmat hám obyektlerdi saqlaydı. Tmendegi konteynerlar ámeldegi: Assosiativkonteynerlar: tez tabıw múmkin bolǵan, tártiplengen maǵlıwmatlar strukturasını realizatsiya etiwmúmkinshiligin beredi. Izbe-iz konteneylar: Izbe-iz shaqırıq etiletuǵın maǵlıwmatlar strukturasını realizatsiya etedi. Konteynerli adapterler dep ataladı. Usı gruppaǵa standart STL konteynerlardi arnawlı maqsetler ushın maslastıirilgen konteynerlar kiredi. Ush standart konteyner adapteri ámeldegi: Stek Gezek Ústin turatuǵın gezek ITERATORLAR Izbe-izliktin’ ma`nisin qayta islew ushın paydalanıladı. Interatorlar kolleksiya obyektlarining elementleri arqalı ótiw ushınisletiledi. Bul kolleksiyalar konteynerlar yamasa jıynaq astı konteynerlar bolıwı múmkin. Iteratorlarning besew tipi ámeldegi: 1. Kirgiziw iteratorlar (input_iterator) teńlik, atınıń ózgertiw hám inkrementa operatsiyalardı qollaydı. ==,! =, *i, ++i, i++, *i++ Kirgiziw iteratsiyasining arnawlı xolati istream_iterator ibarat. 2. Shıǵarıw iteratorlar (output_iterator) ózlestiriw operatordıń shep tárepinen múmkinshilik bolǵan isimning ózgertiwhám inkrementa operatsiyalar qollanıladı. ++i, i++, *i=t, *i++=t Shıǵarıw iteratsiyasining arnawlı xolati ostream_iterator. 3. Bir baǵdardaǵı iteratorlar (forward_iterator) kirgiziw/chiqarish operatsiyalardıń barlıǵını qollaydı, bunnan tısqarıshegarasız ózlestiriwdiń imkaniyatın beredi. ==,! =, =, *i, ++i, i++, *i++ 4. Eki baǵdardaǵı iteratorlar (biderectional_iterator) forward-iteratorlarning barlıq qásiyetlerine iye, bunnan tısqarı, konteynerni ekew baǵdarı boyınsha ótiw imkaniyatın beretuǵın qosımsha dekrementa (--i, i--, *i--) operatsiyasına iye. 5. Qálegen ruxsatǵa iye bolǵan iteratorlar (random_access_iterator) biderectional-iteratorlarning barlıq qásiyetlerine iye, bunnan tısqarı salıstırıw hám mánzil arifmetikasi operatsiyalardı qollaydı. i+=n, i+n, i-=n, i-n, i1-i2, i[n], i1=i2 Sonıń menen birge, STLda teris iteratorlar (reverse iterators) qollanıladı. Izbe-izlikni keri baǵıtda ótetuǵın eki jónelisliyamasa qálegen ruxsatǵa iye bolǵan iteratorlar teris iteratoralar bolıwı múmkin. Konteynerlarga, algoritmlarǵa hámSTLdagi iteratorlarga qosımsha bir neshe standart komponentalar xam qollanıladı. Olardan tiykarları bolsa yadbóliwlovchilar, predikatlar, hám salıstırıw funksiyaları bolıp tabıladı. Xar bir konteynerda onıń ushın anıqlanǵan hámkonteyner ushın yadnı belgilew procesin basqaradigan yad bóliwlovchisi (allocator) ámeldegi. Ko'rsatilmagan túrdebolsa yad bóliwlovchisi allocator klass ob'ekti bolıp tabıladı. Jeke bóliwlovchini xarakteristikalaw múmkin. Birpara algoritmlar hám konteynerlarda áhmiyetli tipdagi predikat atalıwshı funksiyalar isletiledi. Predikatlar unar hámbinar bolıwı múmkin. Ol yamasa bul bahanı alıw anıq shártleri programmashı arqalı anıqlanadı. Unar predikatlarning tipi - UnPred, binar predikatlarning bolsa - BinPred. Argumentlar tipi konteynerda saqlanıwshı ob'ektler tipiga uyqas. Ekew elementlerdi salıstırıw ushın binar predikatlarning arnawlı tipi anıqlanǵan. Ol salıstırıw funksiya (comparison function) dep ataladı. Egerde birinshi element ikinchidan kishi bolsa, ol jaǵdayda funksiya ras bahanı qaytaradı. Comp tip funksiya tipi bolıp tabıladı. STL de ob'ekt-funksiyalar ayriqsha áhmiyetke iye. Ob'ekt-funksiyalar - bul klassta «kichik qawıslar» () operatsiyası anıqlanǵan klass nusqaları. Birpara qallardafunksiyalardı ob'ekt-funksiyalarǵa almastırıw qolay dep esaplanadi. Ob'ekt-funksiya funksiya sıpatında isletilse, oljaǵdayda onı shaqırıw ushın operator () operator isletiledi. Konteyner usılları Iteratorlarni alıw usılları • begin () birinshi elementke kórsetedi; • end () aqırınan keyingi elementke kórsetedi; • rbegin () teris izbe-izlilikdegi birinshi elementti kórsetedi; • rend () teris izbe-izlilikdegi sońǵıdan keyingi elementti kórsetedi Elementlerge ruxsat • front () birinshi elementke qosımsha; • Back () aqırı elementke qosımsha; • operator[](i) tekseriwsiz indeks boyınsha ruxsat; • at (i) tekseriw menen indeks boyınsha ruxsat. • front () birinshi elementke qosımsha; Elementlerdi kirgiziw usılları • insert (p, x) r kórsetken elementten aldın xni qosıw • insert (p, n, x) rdan aldın xning n nusqaların qosıw • insert (p, first, last) rdan aldın [first:last]dagi elementlerdi qosıw • push_back (x) aqırıǵa xlarni qosıw • push_front (x) jańa birinshi elementti qosıw (ikta uchga iye bolǵan tártipler hám dizimler ushın) Elementlerdi óshiriw usılları • erase (p) r pozitsiyadagi elementti óshiriw; • erase (first, last) [first:last]den elementlerdi óshiriw; • pop_back () sońǵı elementti óshiriw; • pop_front () birinshi elementti óshiriw (ikta uchga iye bolǵan tártipler hám dizimler ushın) Ózlestiriw usılları • operator= (x) konteynerga x konteynerni elementleri ózlestiriledi; • assign (n, x) konteynerga x elementtiń n nusqası ózlestiriledi (assotsiativ bolmaǵan konteynerlar ushın); • assign (first, last) [first:last] diapazondaǵı elementlerdi ózlestiriw Assotsiativ usılları • find (elem) elem bahaǵa iye bolǵan birinshi elementti pzitsiyasi tabadı • lower_bound (elem) element qoyıw múmkin bolǵan birinshi poziciyanı to'padi • upper_bound (elem) element qoyıw múmkin bolǵan sońǵı poziciyanı to'padi • equal_range (elem) element qoyıw múmkin bolǵan birinshi hám sońǵı pozitsiyalarni to'padi Assotsiativ usıllar • operator[](k) k giltli elementke ruxsat; • find (k) k giltli element pozitsiyasini tabadı; • lower_bound (k) k giltli elementtiń birinshi pozitsiyasini tabadı; • upper_bound (k) kdan úlken bolǵan giltli birinshi elementti to'padi; • equal_range (k) k giltli elementti lower_bound (kuyi shegarasını) hám upper_bound (joqarı shegarasını) tabadı. • Basqa usıllar • size () elementler sanı; • empty () konteyner bosma? • capacity () vektor ushın ajıratılǵan yad (tek vektorlar ushın); • reserve (n) n elementten ibarat bolǵan konteyner ushın yad ajratadı; • swap (x) ekew konteynerlarni jayın almastırıw; • ==,! =, < salıstırıw operatorları Download 388.32 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling