C++ set’lar


ULASHISH

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
O‘zingiz sinab ko‘ring »

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
O‘zingiz sinab ko‘ring »

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
O‘zingiz sinab ko‘ring »

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
O‘zingiz sinab ko‘ring »

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!