C++ Maps

در C++، Map یکی از ساختارهای داده‌ای STL است که برای نگهداری داده‌ها به صورت کلید-مقدار (Key-Value) استفاده می‌شود.
هر کلید در Map یکتا (Unique) است و مقدار مربوط به آن را می‌توان به راحتی جستجو، اضافه یا حذف کرد.

🔹 1️⃣ ایجاد Map

#include <iostream> #include <map> using namespace std; int main() { map<string, int> m; // Map خالی با کلید string و مقدار int map<string, int> m2 = {{"Alice", 25}, {"Bob", 30}}; for(auto &p : m2) cout << p.first << ": " << p.second << endl; return 0; }

📌 خروجی:

Alice: 25 Bob: 30

Map به صورت خودکار مرتب بر اساس کلید است و کلیدها تکراری نمی‌شوند.

🔹 2️⃣ اضافه کردن و تغییر مقدار

m["Charlie"] = 35; // اضافه کردن یا بروزرسانی m.insert({"David", 40}); // اضافه کردن عنصر m["Alice"] = 28; // بروزرسانی مقدار موجود
  • m[key] → اضافه یا بروزرسانی مقدار

  • insert({key, value}) → اضافه کردن فقط در صورت نبودن کلید

🔹 3️⃣ حذف عناصر

m.erase("Charlie"); // حذف عنصر با کلید مشخص m.clear(); // حذف همه عناصر

🔹 4️⃣ جستجو در Map

if(m.find("Alice") != m.end()) { cout << "Alice found with value " << m["Alice"] << endl; } else { cout << "Alice not found" << endl; }
  • find(key) → اگر کلید موجود باشد iterator برمی‌گرداند، در غیر این صورت m.end()

  • جستجو در Map سریع است (O(log n) با استفاده از Red-Black Tree)

🔹 5️⃣ اندازه و وضعیت

cout << "Size: " << m.size() << endl; if(m.empty()) cout << "Map is empty" << endl;

🔹 6️⃣ Map با ترتیب نزولی

map<int, string, greater<int>> m; m[2] = "Two"; m[1] = "One"; m[3] = "Three"; for(auto &p : m) cout << p.first << ": " << p.second << endl;

📌 خروجی:

3: Three 2: Two 1: One

🔹 7️⃣ نکات کلیدی

  • Map مجموعه‌ای از کلید-مقدار است که کلیدها یکتا و مرتب هستند.

  • اضافه، حذف و جستجو سریع (O(log n)).

  • برای دیتابیس کوچک، شمارش فراوانی، ذخیره‌سازی داده با کلید یکتا کاربرد دارد.

  • اگر ترتیب اهمیتی نداشته باشد، می‌توان از unordered_map استفاده کرد (O(1) تقریبی).

💡 خلاصه:
Map در C++ برای نگهداری داده‌ها به صورت کلید-مقدار استفاده می‌شود. با توابع insert, erase, find, size, empty می‌توان عناصر را مدیریت کرد. Map برای جستجوی سریع، ذخیره داده با کلید یکتا و مرتب‌سازی خودکار بر اساس کلید کاربرد دارد.