C++ list
C++ list
List bir xil tipdagi bir nechta elementni saqlay olishi va o‘lchami dinamik ravishda kattalasha olishi bilan vektorga o‘xshaydi.
Biroq list’lar va vektorlar o‘rtasida ikkita asosiy farq bor:
- List’ga elementlarni ham boshidan, ham oxiridan qo‘shish va olib tashlash mumkin, vektorlar esa odatda oxiridan qo‘shish va olib tashlash uchun optimallashtirilgan.
- Vektorlardan farqli ravishda list ixtiyoriy murojaatni (random access) qo‘llab-quvvatlamaydi, ya’ni to‘g‘ridan-to‘g‘ri muayyan indeksga o‘tib yoki elementlarga indeks raqamlari orqali murojaat qilib bo‘lmaydi.
List’dan foydalanish uchun <list> sarlavha faylini qo‘shishingiz kerak:
// Include the list library
#include <list>
List yaratish
List yaratish uchun list kalit so‘zidan foydalaning, burchakli qavslar <> ichida u saqlaydigan qiymatlar tipini, so‘ng list nomini ko‘rsating, masalan: list<type>
listName.
Misol
// Create a list called cars that will store strings
list<string> cars;
Agar e’lon qilish paytida elementlar qo‘shmoqchi bo‘lsangiz, ularni jingalak qavslar {} ichida vergul bilan ajratib yozing:
Misol
// Create a list called cars that will store strings
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Print list elements
for (string car : cars) {
cout << car << "\n";
}
O‘zingiz sinab ko‘ring »
Eslatma: List e’lon qilingandan keyin uning tipini (misolimizda string) o‘zgartirib bo‘lmaydi.
List elementlariga murojaat qilish
Massivlar va vektorlardagidek list elementlariga indeks raqamlari orqali murojaat qilib bo‘lmaydi.
Biroq birinchi va oxirgi elementga mos ravishda .front() va .back() funksiyalari yordamida murojaat qilishingiz mumkin:
Misol
// Create a list called cars that will store strings
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Get the first element
cout << cars.front(); // Outputs Volvo
// Get the last element
cout << cars.back(); // Outputs Mazda
O‘zingiz sinab ko‘ring »
List elementini o‘zgartirish
Birinchi yoki oxirgi element qiymatini .front() va .back() funksiyalari yordamida o‘zgartirishingiz ham mumkin
Misol
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Change the value of the first element
cars.front() = "Opel";
// Change the value of the last element
cars.back() = "Toyota";
cout << cars.front(); // Now outputs Opel instead of Volvo
cout << cars.back(); // Now outputs Toyota instead of Mazda
O‘zingiz sinab ko‘ring »
List’ga element qo‘shish
List’ga element qo‘shish uchun uning boshiga element qo‘yishda .push_front() funksiyasidan, oxiriga element qo‘shishda esa .push_back() funksiyasidan foydalanishingiz mumkin:
Misol
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Add an element at the beginning
cars.push_front("Tesla");
// Add an element at the end
cars.push_back("VW");
O‘zingiz sinab ko‘ring »
List’dan element olib tashlash
List’dan element olib tashlash uchun uning boshidagi elementni olib tashlashda .pop_front() funksiyasidan, oxiridagi elementni olib tashlashda esa .pop_back() funksiyasidan foydalaning:
Misol
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Remove the first element
cars.pop_front();
// Remove the last element
cars.pop_back();
O‘zingiz sinab ko‘ring »
List o‘lchami
List’da nechta element borligini bilish uchun .size() funksiyasidan foydalaning:
Misol
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.size(); // Outputs 4
O‘zingiz sinab ko‘ring »
List bo‘shligini tekshirish
List bo‘sh yoki bo‘sh emasligini aniqlash uchun .empty() funksiyasidan foydalaning.
.empty() funksiyasi list bo‘sh bo‘lsa
1 (true), aks holda 0 (false) qaytaradi:
Misol
list<string> cars;
cout << cars.empty(); // Outputs 1 (The list is empty)
O‘zingiz sinab ko‘ring »
Misol
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.empty(); // Outputs 0 (not empty)
O‘zingiz sinab ko‘ring »
List bo‘ylab sikl
List elementlarini an’anaviy for siklini .size() funksiyasi bilan birga ishlatib aylanib chiqib bo‘lmaydi, chunki list elementlariga indeks orqali murojaat qilish imkonsiz:
Misol
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (int i = 0; i < cars.size(); i++) {
cout << cars[i] << "\n";
}
List bo‘ylab aylanib chiqishning eng oddiy usuli — for-each sikli:
Misol
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (string car : cars) {
cout << car << "\n";
}
O‘zingiz sinab ko‘ring »
Maslahat: List’larni iterator yordamida ham aylanib chiqish mumkin, bu haqda keyingi boblarda batafsil bilib olasiz.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
