Skip to content

Vektorlar (Vectors)

C++ Vektor

C++ dagi vektor o'lchamini o'zgartirish mumkin bo'lgan massiv ga o'xshaydi.

Vektorlar ham, massivlar ham bir xil ma'lumot turining bir nechta elementlarini saqlash uchun ishlatiladigan ma'lumot tuzilmalaridir.

Massiv va vektor o'rtasidagi farq shundaki, massivning hajmini o'zgartirish mumkin emas (element qo'shish yoki olib tashlash mumkin emas). Biroq vektor kerak bo'lganda kattalashishi yoki kichiklashishi mumkin.

Vektordan foydalanish uchun <vector> sarlavha faylini import qilish kerak:

MISOL

cpp
// Vektor kutubxonasini import qilish
#include <vector>

Vektor yaratish

Vektor yaratish uchun vector kalit so'zini ishlating va burchak qavslar <> ichida saqlashi kerak bo'lgan qiymatlar turini va keyin vektor nomini belgilang: vector<tur> vektorNomi.

MISOL

cpp
// Satrlarni saqlaydigan cars nomli vektor yaratish
vector<string> cars;

E'lon vaqtida elementlar qo'shmoqchi bo'lsangiz, ularni vergul bilan ajratilgan ro'yxatda, figurali qavslar {} ichiga joylashtiring:

MISOL

cpp
// Satrlarni saqlaydigan cars nomli vektor yaratish
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Vektor elementlarini chop etish
for (string car : cars) {
  cout << car << "\n";
}

ESLATMA

Vektor turi (misolimizdagi string) e'lon qilingandan keyin o'zgartirib bo'lmaydi.


Vektor elementiga kirish

Vektor elementiga kvadrat qavslar [] ichidagi indeks raqami orqali kirish mumkin.

Vektorlar massivlar kabi 0 dan boshlab indekslanadi, ya'ni [0] birinchi element, [1] ikkinchi element va hokazo:

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Birinchi elementni olish
cout << cars[0];  // Volvo chiqaradi

// Ikkinchi elementni olish
cout << cars[1];  // BMW chiqaradi

Vektor kutubxonasining afzalliklaridan biri shundaki, u ko'plab foydali funksiyalarni o'z ichiga oladi. Masalan, vektorning birinchi yoki oxirgi elementiga .front() va .back() funksiyalari orqali kirish mumkin:

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Birinchi elementni olish
cout << cars.front();

// Oxirgi elementni olish
cout << cars.back();

Belgilangan indeksdagi elementga kirish uchun .at() funksiyasidan foydalanish mumkin:

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Ikkinchi elementni olish
cout << cars.at(1);

// Uchinchi elementni olish
cout << cars.at(2);

ESLATMA

.at() funksiyasi ko'pincha kvadrat qavslarga [] qaraganda afzalroq, chunki element chegaradan tashqarida bo'lsa xato xabarini beradi.


Vektor elementini o'zgartirish

Muayyan elementning qiymatini o'zgartirish uchun indeks raqamiga murojaat qilish mumkin:

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Birinchi elementning qiymatini o'zgartirish
cars[0] = "Opel";

cout << cars[0];  // Endi Volvo o'rniga Opel chiqaradi

.at() funksiyasi bilan xavfsizroq:

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Birinchi elementning qiymatini o'zgartirish
cars.at(0) = "Opel";

cout << cars.at(0);  // Endi Volvo o'rniga Opel chiqaradi

Vektor elementlarini qo'shish

Vektor va massiv o'rtasidagi eng katta farq shundaki, vektorlar dinamik ravishda o'sishi mumkin. Bu vektor elementlarini qo'shish yoki olib tashlash mumkinligini anglatadi.

Vektorga element qo'shish uchun .push_back() funksiyasidan foydalaning, u vektorning oxiriga element qo'shadi:

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars.push_back("Tesla");

Xohlagancha element qo'shish mumkin:

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars.push_back("Tesla");
cars.push_back("VW");
cars.push_back("Mitsubishi");
cars.push_back("Mini");

Vektor elementlarini olib tashlash

Vektordan element olib tashlash uchun .pop_back() funksiyasidan foydalaning, u vektorning oxiridan elementni olib tashlaydi:

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars.pop_back();

ESLATMA

Elementlar odatda faqat vektorning oxiridan qo'shiladi va olib tashlanadi. Agar ikkala uchidan element qo'shish yoki olib tashlash kerak bo'lsa, vektor o'rniga dekyu ishlatish yaxshiroqdir.


Vektor hajmi

Vektorda nechta element borligini bilish uchun .size() funksiyasidan foydalaning:

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.size();  // 4 chiqaradi

Vektor bo'sh yoki yo'qligini tekshirish

.empty() funksiyasi vektor bo'sh bo'lsa 1 (true), bo'lmasa 0 (false) qaytaradi:

MISOL

cpp
vector<string> cars;
cout << cars.empty();  // 1 chiqaradi (vektor bo'sh)

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.empty();  // 0 chiqaradi (bo'sh emas)

Vektor bo'ylab tsikl

.size() funksiyasi bilan for tsikli yordamida vektor elementlari bo'ylab aylanish mumkin:

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (int i = 0; i < cars.size(); i++) {
  cout << cars[i] << "\n";
}

Yoki yanada toza va o'qilishi oson bo'lgan for-each tsikli ishlatish mumkin:

MISOL

cpp
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (string car : cars) {
  cout << car << "\n";
}

MASLAHAT

Iterator yordamida ham vektorlar bo'ylab aylanish mumkin, bu haqda keyingi boblarda o'rganasiz.