Скачиваний:
1
Добавлен:
21.02.2024
Размер:
227.36 Кб
Скачать

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?