Скачиваний:
0
Добавлен:
21.02.2024
Размер:
1.1 Mб
Скачать

2-ÁMELIY SABAQ. KONTEYNER KLASLAR. SIZIQLI KONTEYNERLER (ARRAY, VECTOR).

Jumıstıń maqseti: C++ programmalastırıw tilinde konteyner klaslar hám olardı qollanılıwdı úyreniw. Sızıqlı konteynerler: array hám vector klaslarınan paydalanıp kónlikpelerdi qáliplestiriw.

Teoriyalıq bólim:

C++ tilindegi konteyner klası belgili bir maǵlıwmatlar tipindegi obyektlerdi saqlawǵa hám shólkemlestiriwge arnalǵan klass bolıp tabıladı. Kóplegen hártúrli konteyner klasları bar. Olardıń hárqaysısınıń óz artıqmashılıqları, kemshilikleri yamasa paydalanıw sheklewleri bar. Programmalastırıwda eń jiyi qollanılatuǵın konteyner massiv bolıp tabıladı. C++ tilinde standart ápiwayı massivler bolsa da, kóplegen baǵdarlamashılar std:array yamasa std::vector massiv konteynerlik klasların paydalanadı. Standart massivlerden ayırmashılıǵı, massiv konteyneriniń klasları qosılǵan yamasa óshirilgende dinamikalıq túrde ólshemin ózgertiw imkaniyatına iye. Bul olardı ádettegi massivlerge qaraǵanda qolaylı hám qáwipsiz qıladı.

ÁMELIY BÓLIM:

array

Anıqlaw hám inicializaciya (iske túsiriw)

tip atamasınan keyin múyeshli qawsırmada <array> obyektin dúziw ushın onıń tipi menen ólshemin beriw kerek:

1

2

3

4

5

6

#include <array>

 

int main()

{  

    std::array<int, 5> numbers;       // 5 int sanınan ibarat

}

Bul jaǵdayda int tipi 5 sannan ibarat massiv obyekti anıqlanadı. Ádepki boyınsha, barlıq konteyner elementlerinde anıqlanbaǵan mánisler boladı.

Arnawlı mánisleri bar konteynerdi inicializaciyalaw ushın inicializatordı qollanıwǵa boladı - mánislerdi figuralı qawsırmalardaǵı konteyner elementlerine beriw:

1

std::array<int, 5> numbers {};    // 5 nólden ibarat

Bul jaǵdayda bos inicializator sanlar konteyneriniń barlıq elementlerin nolge deyin inicializaciyalaydı. Sonday-aq elementler ushın arnawlı mánisler kórsetiwge boladı:

1

std::array<int, 5> numbers {2, 3, 4, 5, 6};

Bekitilgen ólshem inicializaciyaǵa sheklew qoyadı: konteynerge tasıwshı elementlerdiń sanı onıń ólsheminen aspawı kerek. Konteynerdiń birinshi elementlerine berilgen az mánislerdi beriwge boladı, al qalǵan elementler ádepki mánislerdi aladı (mısalı, integral tipler ushın 0 sanı):

1

std::array<int, 5> numbers {2, 3, 4};     // {2, 3, 4, 0, 0}

Degen menen, eger inicializaciyalaw gezinde biz konteyner ólsheminen kóbirek elementlerdi bersek, qátege ushıraymız.

Sonı atap ótiw orınlı, C++ 17 standartınan baslap, inicializaciyalaw gezinde elementlerdiń tipi menen sanın kórsete almaysız - kompilyator onı inicializaciya dizimi negizinde avtomat túrde shıǵaradı:

1

std::array numbers {2, 3, 4, 5, 6};

Degen menen figuralı qawsırmalardaǵı dizimde kem degende bir mánis bolıwı kerek.

Elementlerge kirisiw

Array konteyneriniń elementlerine kirisiw ushın siz massivler menen jumıs islegendey sintaksisti paydalana alasız - kvadrat qawsırmada qatnasatuǵın elementtiń indeksin kórsetiń:

1

2

3

4

5

6

7

8

9

10

11

12

13

#include <array>

#include <iostream>

 

int main()

{  

    std::array<int, 5> numbers {2, 3, 4, 5, 6};

    // elementtiń mánisin alıw

    int n = numbers[2];

    std::cout << "n = " << n << std::endl; // n = 4

    // elementtiń mánisin ózgertiw

    numbers[2] = 12;

    std::cout << "numbers[2] = " << numbers[2] << std::endl; // numbers[2] = 12

}

Ekran kórinisi hám nátiyje