C++ set’lar
C++ set
Set takrorlanmas (noyob) elementlarni saqlaydi va ular:
- Avtomatik ravishda o‘sish tartibida saralanadi.
- Noyob bo‘ladi, ya’ni teng yoki takroriy qiymatlar e’tiborga olinmaydi.
- Qo‘shilishi yoki olib tashlanishi mumkin, lekin mavjud element qiymatini o‘zgartirib bo‘lmaydi.
- Ularga indeks raqamlari orqali murojaat qilib bo‘lmaydi, chunki tartib indekslashga emas, saralashga asoslangan.
Set’dan foydalanish uchun <set> sarlavha faylini qo‘shishingiz kerak:
// Include the set library
#include <set>
Set yaratish
Set yaratish uchun set kalit so‘zidan foydalaning, burchakli qavslar <> ichida u saqlaydigan qiymatlar tipini, so‘ng set nomini ko‘rsating, masalan: set<type>
setName.
Misol
// Create a set called cars that will store strings
set<string> cars;
Agar e’lon qilish paytida elementlar qo‘shmoqchi bo‘lsangiz, ularni jingalak qavslar {} ichida vergul bilan ajratib yozing:
Misol
// Create a set called cars that will store strings
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Print set elements
for (string car : cars) {
cout << car << "\n";
}
Natija quyidagicha bo‘ladi:
BMW
Ford
Mazda
Volvo
Yuqoridagi natijadan ko‘rinib turibdiki, set’dagi elementlar avtomatik ravishda saralanadi. Bu holatda stringlar bilan ishlayotganimiz uchun ular alifbo tartibida saralangan.
Agar set’da butun sonlarni saqlasangiz, qaytarilgan qiymatlar son qiymati bo‘yicha saralanadi:
Misol
// Create a set called numbers that will store integers
set<int> numbers = {1, 7, 3, 2, 5, 9};
// Print set elements
for (int num : numbers) {
cout << num << "\n";
}
Natija quyidagicha bo‘ladi:
1
2
3
5
7
9
Eslatma: Set e’lon qilingandan keyin uning tipini (masalan, yuqoridagi misollardagi string va int) o‘zgartirib bo‘lmaydi.
Set’ni kamayish tartibida saralash
Sukut bo‘yicha set’dagi elementlar o‘sish tartibida saralanadi. Agar tartibni teskari qilmoqchi bo‘lsangiz, burchakli qavslar ichida greater<type> funktoridan foydalanishingiz mumkin, masalan:
Misol
// Sort elements in a set in descending order
set<int, greater<int>> numbers = {1, 7, 3, 2, 5, 9};
// Print the elements
for (int num : numbers) {
cout << num << "\n";
}
Natija quyidagicha bo‘ladi:
9
7
5
3
2
1
Eslatma: greater<type> ichida ko‘rsatilgan tip set elementlarining tipiga (misolimizda int) mos kelishi kerak.
Noyob elementlar
Set’dagi elementlar noyob bo‘ladi, ya’ni ular takrorlanishi yoki bir-biriga teng bo‘lishi mumkin emas.
Masalan, set’ga "BMW" qiymatini ikki marta qo‘shishga harakat qilsak, takroriy element e’tiborga olinmaydi:
Misol
set<string> cars = {"Volvo", "BMW", "Ford", "BMW", "Mazda"};
// Print set elements
for (string car : cars) {
cout << car << "\n";
}
Natija quyidagicha bo‘ladi:
BMW
Ford
Mazda
Volvo
Element qo‘shish
Set’ga element qo‘shish uchun .insert() funksiyasidan foydalanishingiz mumkin:
Misol
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Add new elements
cars.insert("Tesla");
cars.insert("VW");
cars.insert("Toyota");
cars.insert("Audi");
O‘zingiz sinab ko‘ring »
Elementlarni olib tashlash
Set’dan muayyan elementlarni olib tashlash uchun .erase() funksiyasidan foydalanishingiz mumkin:
Misol
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Remove elements
cars.erase("Volvo");
cars.erase("Mazda");
O‘zingiz sinab ko‘ring »
Set’dan barcha elementlarni olib tashlash uchun .clear() funksiyasidan foydalanishingiz mumkin:
Misol
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// Remove all elements
cars.clear();
O‘zingiz sinab ko‘ring »
Set o‘lchamini aniqlash
Set’da nechta element borligini bilish uchun .size() funksiyasidan foydalaning:
Misol
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.size(); // Outputs 4
O‘zingiz sinab ko‘ring »
Set bo‘shligini tekshirish
Set bo‘sh yoki bo‘sh emasligini aniqlash uchun .empty() funksiyasidan foydalaning.
.empty() funksiyasi set bo‘sh bo‘lsa
1 (true), aks holda 0 (false) qaytaradi:
Misol
set<string> cars;
cout << cars.empty(); // Outputs 1 (The set is empty)
O‘zingiz sinab ko‘ring »
Misol
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.empty(); // Outputs 0 (not empty)
O‘zingiz sinab ko‘ring »
Set bo‘ylab sikl
Set bo‘ylab for-each sikli yordamida aylanib chiqishingiz mumkin:
Misol
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (string car : cars) {
cout << car << "\n";
}
O‘zingiz sinab ko‘ring »
Maslahat: Set’larni iterator yordamida ham aylanib chiqish mumkin, bu haqda keyingi boblarda batafsil bilib olasiz.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
