Skip to content

Lug'atlar (Maps)

C++ Lug'at

Lug'at elementlarni "kalit/qiymat" juftliklarida saqlaydi.

Lug'atdagi elementlar:

  • Kalitlar bo'yicha kirish mumkin (indeks bo'yicha emas) va har bir kalit noyob
  • Avtomatik ravishda kalitlari bo'yicha o'sish tartibida saralanadi

Lug'atdan foydalanish uchun <map> sarlavha faylini import qiling:

MISOL

cpp
#include <map>

Lug'at yaratish

map<kalitTuri, qiymatTuri> lugatNomi shaklida yaratiladi:

MISOL

cpp
map<string, int> people = { {"John", 32}, {"Adele", 45}, {"Bo", 29} };

Lug'at elementiga kirish

Kvadrat qavslar [] ichidagi kalitga murojaat qilinadi:

MISOL

cpp
map<string, int> people = { {"John", 32}, {"Adele", 45}, {"Bo", 29} };
cout << "John is: " << people["John"] << "\n";

.at() funksiyasi orqali ham kirish mumkin (element mavjud bo'lmasa xato beradi):

MISOL

cpp
cout << "Bo is: " << people.at("Bo") << "\n";

Qiymatlarni o'zgartirish

MISOL

cpp
people["John"] = 50;
cout << "John is: " << people["John"];  // John is: 50

Element qo'shish

MISOL

cpp
people["Jenny"] = 22;
// yoki
people.insert({"Liam", 24});

ESLATMA

Teng kalitli elementlar bo'lishi mumkin emas. Qiymatlar teng bo'lishi mumkin, lekin kalitlar noyob bo'lishi kerak.


Element olib tashlash

MISOL

cpp
people.erase("John");  // muayyan element
people.clear();         // barcha elementlar

Lug'at hajmi va bo'shligini tekshirish

MISOL

cpp
cout << people.size();   // elementlar soni
cout << people.empty();  // bo'sh bo'lsa 1, bo'lmasa 0
cout << people.count("John");  // 1 (mavjud) yoki 0 (mavjud emas)

Lug'at bo'ylab tsikl

auto kalit so'zi bilan .first (kalit) va .second (qiymat) ishlatiladi:

MISOL

cpp
map<string, int> people = { {"John", 32}, {"Adele", 45}, {"Bo", 29} };

for (auto person : people) {
  cout << person.first << " is: " << person.second << "\n";
}

Natija:

Adele is: 45
Bo is: 29
John is: 32

Teskari tartib uchun greater<tur> funktoridan foydalaning:

MISOL

cpp
map<string, int, greater<string>> people = { {"John", 32}, {"Adele", 45}, {"Bo", 29} };

for (auto person : people) {
  cout << person.first << " is: " << person.second << "\n";
}