Skip to content

Toplamlar (Sets)

C++ Toplam

Toplam noyob elementlarni saqlaydi, ular:

  • Avtomatik ravishda o'sish tartibida saralanadı
  • Noyob bo'ladi, ya'ni teng yoki takroriy qiymatlar e'tiborga olinmaydi
  • Qo'shilishi yoki olib tashlanishi mumkin, lekin mavjud elementning qiymati o'zgartirib bo'lmaydi
  • Indeks raqamlari orqali kirish mumkin emas, chunki tartib indekslashga emas, saralashga asoslangan

Toplamdan foydalanish uchun <set> sarlavha faylini import qiling:

MISOL

cpp
#include <set>

Toplam yaratish

Toplam yaratish uchun set kalit so'zini ishlating: set<tur> toplamNomi.

MISOL

cpp
set<string> cars;

E'lon vaqtida elementlar qo'shish mumkin:

MISOL

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

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

Natija:

BMW
Ford
Mazda
Volvo

Ko'rib turganingizdek, elementlar avtomatik ravishda saralangan. Bu holda alifbo tartibida, chunki satrlar bilan ishlaymiz. Butun sonlar saqlasangiz, raqamli tartibda saralanadi:

MISOL

cpp
set<int> numbers = {1, 7, 3, 2, 5, 9};

for (int num : numbers) {
  cout << num << "\n";
}

Natija:

1
2
3
5
7
9

Kamayish tartibida saralash

Tartibni teskari qilish uchun burchak qavslar ichida greater<tur> funktoridan foydalaning:

MISOL

cpp
set<int, greater<int>> numbers = {1, 7, 3, 2, 5, 9};

for (int num : numbers) {
  cout << num << "\n";
}

Natija:

9
7
5
3
2
1

Noyob elementlar

Toplamdagi elementlar noyob, ya'ni takrorlanishi mumkin emas. Masalan, "BMW" ni ikki marta qo'shsak, takroriy e'tiborga olinmaydi:

MISOL

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

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

Natija:

BMW
Ford
Mazda
Volvo

Element qo'shish

Toplamga element qo'shish uchun .insert() funksiyasidan foydalaning:

MISOL

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

cars.insert("Tesla");
cars.insert("VW");
cars.insert("Toyota");
cars.insert("Audi");

Element olib tashlash

Muayyan elementlarni olib tashlash uchun .erase() funksiyasidan foydalaning:

MISOL

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

cars.erase("Volvo");
cars.erase("Mazda");

Barcha elementlarni olib tashlash uchun .clear() funksiyasidan foydalaning:

MISOL

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

cars.clear();

Toplam hajmi

.size() funksiyasi yordamida toplamdagi elementlar sonini bilish mumkin:

MISOL

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

Toplam bo'sh yoki yo'qligini tekshirish

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

MISOL

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

Toplam bo'ylab tsikl

For-each tsikli yordamida toplam bo'ylab aylanish mumkin:

MISOL

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

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

MASLAHAT

Iterator yordamida ham toplamlar bo'ylab aylanish mumkin.