Ro'yxat (List)
C++ Ro'yxat
Ro'yxat vektorga o'xshab, bir xil turdagi bir nechta elementni saqlashi va dinamik o'sishi mumkin.
Biroq, ro'yxat va vektor o'rtasida ikkita asosiy farq bor:
- Ro'yxatning boshiga ham, oxiriga ham element qo'shish va olib tashlash mumkin, vektorlar esa odatda faqat oxiridan qo'shish va olib tashlash uchun optimallashtirilgan.
- Vektorlardan farqli o'laroq, ro'yxat tasodifiy kirishni qo'llab-quvvatlamaydi, ya'ni to'g'ridan-to'g'ri muayyan indeksga o'tish yoki elementlarga indeks raqamlari bo'yicha kirish mumkin emas.
Ro'yxatdan foydalanish uchun <list> sarlavha faylini import qilish kerak:
MISOL
// Ro'yxat kutubxonasini import qilish
#include <list>Ro'yxat yaratish
Ro'yxat yaratish uchun list kalit so'zini ishlating: list<tur> royxatNomi.
MISOL
// Satrlarni saqlaydigan cars nomli ro'yxat yaratish
list<string> cars;E'lon vaqtida elementlar qo'shish uchun:
MISOL
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Ro'yxat elementlarini chop etish
for (string car : cars) {
cout << car << "\n";
}Ro'yxat elementiga kirish
Ro'yxat elementlariga massiv va vektorlardagi kabi indeks raqamlari orqali kirish mumkin emas.
Biroq, birinchi yoki oxirgi elementga .front() va .back() funksiyalari orqali kirish mumkin:
MISOL
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Birinchi elementni olish
cout << cars.front(); // Volvo chiqaradi
// Oxirgi elementni olish
cout << cars.back(); // Mazda chiqaradiRo'yxat elementini o'zgartirish
Birinchi yoki oxirgi elementning qiymatini .front() va .back() funksiyalari orqali o'zgartirish mumkin:
MISOL
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Birinchi elementning qiymatini o'zgartirish
cars.front() = "Opel";
// Oxirgi elementning qiymatini o'zgartirish
cars.back() = "Toyota";
cout << cars.front(); // Endi Volvo o'rniga Opel chiqaradi
cout << cars.back(); // Endi Mazda o'rniga Toyota chiqaradiRo'yxatga element qo'shish
.push_front() bilan boshiga va .push_back() bilan oxiriga element qo'shish mumkin:
MISOL
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Boshiga element qo'shish
cars.push_front("Tesla");
// Oxiriga element qo'shish
cars.push_back("VW");Ro'yxatdan element olib tashlash
.pop_front() bilan boshidan va .pop_back() bilan oxiridan element olib tashlash mumkin:
MISOL
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Birinchi elementni olib tashlash
cars.pop_front();
// Oxirgi elementni olib tashlash
cars.pop_back();Ro'yxat hajmi
.size() funksiyasi yordamida ro'yxatdagi elementlar sonini bilish mumkin:
MISOL
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.size(); // 4 chiqaradiRo'yxat bo'sh yoki yo'qligini tekshirish
.empty() funksiyasi ro'yxat bo'sh bo'lsa 1 (true), bo'lmasa 0 (false) qaytaradi:
MISOL
list<string> cars;
cout << cars.empty(); // 1 chiqaradi (ro'yxat bo'sh)Ro'yxat bo'ylab tsikl
Ro'yxat elementlari bo'ylab an'anaviy for tsiklida indeks bilan aylanish mumkin emas. Eng oddiy usul — for-each tsikli:
MISOL
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (string car : cars) {
cout << car << "\n";
}MASLAHAT
Iterator yordamida ham ro'yxatlar bo'ylab aylanish mumkin.
