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

2-Lekciya. Konteynerler(Kollekciyalar). STL kitapxanaları. Konteyner klaslar. Sızıqlı konteynerler (array, vector, deque, list, forward_list).

Jobası:

1.Standart shablon kitapxanası

2.C++ te STL konteynerleri hám olardıń túrleri

3.array, vector, deque, list, forward_list hám forward klasları

Standart shablon kitapxanası (Standard Template Library - STL)

C++ te standart shablon kitapxanası (Standard Template Library - STL) vektorlar, dizimler, gezekler h.t.b sıyaqlı algoritmler menen maǵlıwmatlar strukturasın ámelge asırıw ushın programmalastırıw qurallarınıń jıynaǵın usınadı. STL bul maǵlıwmatlar strukturası menen algoritmlerin qatań tekserilgen ulıwma maqsettegi klaslar menen funkciyalardı paydalanıp ámelge asıradı.

C++ te STL niń 3 tiykarǵı komponenti bar:

Konteynerler

Iteratorlar

Algoritmler

Bularǵa qosımsha STL sonıń menen qatar funkciya obyektlerin, smart kórsetkishlerdi hám ózgeshe jaǵdaylardı qayta islew mexanizmlerin qosqanda, birneshe basqa imkaniyatlardı támiyinleydi.

C++ te STL konteynerleri

STL konteynerleri maǵlıwmatlardı saqlaydı hám zárúr bolǵan jaǵdayda olardı belgili bir tártipte shólkemlestiredi.

Mısalı, vektorlar (vectors) bir tipli maǵlıwmatlardı retlilik (izbe-izlik) penen saqlaydı. Al kartalar (maps) maǵlıwmatlardı gilt-mánis juplarında saqlaydı.

STL konteynerlerin 3 túrge bóliwge boladı:

1.Konteynerlerdiń izbe-izligi (retliligi):

Array (Massiv)

Vector (Vektor)

Queue (Gezek)

Deque (Sonlıqtan)

Forward_list (Aldıǵa_dizim)

List (Dizim)

2.Associativ konteynerler:

Set

Multiset

Map

Multimap

3.Retsiz associativli konteynerler:

Unordered_set

Unordered_multiset

Unordered_map

Unordered_multimap

array klası shablonı template<class T,

std::size_t N> struct array;

array - N ólshemdegi massivti qamtıytuǵın konteyner. array-dıń funkciya aǵzaları

Atı

Táriyip

at

Kórsetilgen elementke indeks

 

tekseriwshi menen kiriwdi támiyinleydi

operator[]

Belgilengen elementke kiriwdi

 

támiyinleydi

front

Birinshi elementke kiriwdi támiyinleydi

back

Aqırǵı elementke kiriwdi támiyinleydi

data (C++11)

Massivtiń birinshi haqıyqıy elementine

 

kórsetkishti qaytaradı

vector klası

Vector klasınıń shablonı template< class T,

class Allocator = std::allocator<T> > class vector;

namespace pmr { template <class T>

using vector = std::vector<T, std::polymorphic_allocator<T>>;

}

1)std:: vector - ózgeriwsheń parametrdegi izbe-iz konteynerdi qamtıp alıwshı massiv.

2)std :: pmr :: vector shablon eliklewleri polimorf ajıratıwshı járdeminde. Allocator - elementler ushın yad ajıratıwda qollanılatuǵın klass.

deque klası

Deque klasınıń shablonı: template<class T,

class Allocator = std::allocator<T> > class deque;

std :: deque (óz-ara gezek) - indekslengen izbe-iz konteyner, bul sizge elementlerdi basınan hám aqırınan tez kirgiziw hám alıp taslaw imkaniyatın beredi. Bunnan tısqarı, óz-ara (eki tárepleme) gezektiń eki tóbesine ornatıw hám óshiriw kórsetkishleri hám basqa elementlerge baylanıstırıwdı qaldıradı.

Std :: vector-dan ayırmashılıǵı, deque elementleri turaqlı túrde saqlanbaydı: ádetde bul belgilengen ólshemdegi ajıratılǵan qatarlar kompleksinen paydalanıp ámelge asırıladı. deque avtomatikalıq túrde qayta islenedi, kerek bolǵanda keńeyedi. deque keńeytpesi std :: vector keńeytpesine qaraǵanda qolaylılaw, sebebi ol ámeldegi elementlerdi jańa yadqa nusqalawdı talap etpeydi.

list klası

list klası shablonı: template < class T,

class Allocator = std::allocator<T> > class list;

List - bul konteynerdiń hár qanday poziciyasınan elementlerdi tez kirgiziw hám alıp taslawdı qollaytuǵın klass. Tez tosınarlı kirisiw qollamaydı. Eki baylanısqan dizim retinde ámelge asıriladı. std::forward_list-den ayrıqsha bolıp esaplanıw, bul konteyner óz-ara iteraciyani támiyinleydi, sonıń menen birge paydalanılǵan yadqa salıstırǵanda ónimli emes.

forward_list

forward_list klasınıń shablonı: template <class T,

class Allocator = std::allocator<T> > class forward_list;

Forward_list - konteynerden elementlerdi kirgiziw hám alıp taslaw mexanizmin támiyinleytuǵın klass. Tez tosınarlı kirisiwdi qollamaydı. Ol bir baǵdarlanǵan dizim retinde ámelge asırıladı hám C tilindegi soǵan uqsas programma menen salıstırǵanda qosımsha shıǵınlarǵa iye emes: std :: list ten ayırmashılıǵı, bul túrdegi konteyner óz-ara iteraciyanı qollamaydı.

1-mısal: C++ STL Konteynerler: Vector

C++ tilinde vektorlar ólshemi ózgertilgen massivler sıyaqlı; olar bir tiptegi maǵlıwmatlardı izbe-iz saqlaydı hám zárúr bolǵan jaǵdayda olardıń ólshemin

orınlaw waqtında ózgertiwge boladı. Vektordı paydalanıw ushın <vector> tema

(kitapxana) faylın import etiwimiz kerek.

#include <iostream> #include <vector>

using namespace std;

int main() {

//int tipindegi vektor jaratıw vector<int> numbers {1, 2, 3, 4, 5};

//vektor elementlerin diapazonlı cikl járdeminde basıp shıǵarıw for (int number : numbers) {

cout << number << " ";

}

return 0;

}

Nátiyje:

1 2 3 4 5

Kodtıń orınlanıwı

Bunda biz 5 elementten ibarat numbers dep atalatuǵın int tipli vektordı dúzdik. Sonnan keyin vektordıń barlıq elementlerin basıp shıǵarıw ushın range for ciklin qollandıq.

BAQLAW SORAWLARÍ:

1.C++ te standart shablon kitapxanasınıń wazıypası qanday?

2.C++ te STL-diń neshe tiykarǵı komponenti bar?

3.Konteynerlerdiń izbe-izligi (retliligi)ne neler kiredi?

4.array klası shablonı qanday?

5.vector klası haqqında mısallar keltiriń?

6.deque klasınıń shablonı qanday?

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