# 4.8 Maps

C++ dilinde `map`, anahtar-değer çiftlerini depolamak için kullanılan bir veri yapısıdır. Her bir anahtar (key), benzersizdir ve yalnızca bir kez bulunabilir. Her anahtar, ona karşılık gelen bir değer (value) ile ilişkilendirilir. `map`, C++ Standard Template Library (STL) içinde yer alır ve genellikle hızlı arama ve erişim gerektiren durumlarda kullanılır.

#### Map'in Temel Özellikleri

1. **Benzersiz Anahtarlar**: Her anahtar yalnızca bir kez kullanılabilir, bu da tekrarlayan anahtarları engeller.
2. **Sıralı Depolama**: Anahtarlar otomatik olarak sıralanır. Bu özellik, belirli bir anahtara hızlı erişim sağlar.
3. **Dinamik Boyut**: Map, eleman ekledikçe otomatik olarak boyutunu ayarlar.

#### Map Kullanımı

C++'ta map kullanmak için `#include <map>` kütüphanesini dahil etmeniz gerekmektedir. Aşağıda map'in temel kullanımına dair örnekler bulunmaktadır.

**Map Oluşturma ve Eleman Ekleme**

```cpp
#include <iostream>
#include <map>

int main() {
    // Map oluşturma
    std::map<std::string, int> myMap;

    // Eleman ekleme
    myMap["Alice"] = 25;
    myMap["Bob"] = 30;
    myMap["Charlie"] = 35;

    // Map elemanlarını yazdırma
    std::cout << "Map elemanları:" << std::endl;
    for (const auto& pair : myMap) {
        std::cout << pair.first << ": " << pair.second << std::endl; // Anahtar: Değer
    }

    return 0;
}
```

**Eleman Çıkarma**

Map'ten eleman çıkarmak için `erase()` fonksiyonu kullanılır.

```cpp
#include <iostream>
#include <map>

int main() {
    // Map oluşturma
    std::map<std::string, int> myMap = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 35}};

    // Eleman çıkarma
    myMap.erase("Bob"); // "Bob" anahtarını çıkar

    // Map elemanlarını yazdırma
    std::cout << "Map elemanları (Bob çıkarıldı):" << std::endl;
    for (const auto& pair : myMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}
```

**Eleman Arama**

Map içerisinde bir anahtarın var olup olmadığını kontrol etmek için `find()` fonksiyonu kullanılır.

```cpp
#include <iostream>
#include <map>

int main() {
    // Map oluşturma
    std::map<std::string, int> myMap = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 35}};

    // Eleman arama
    auto it = myMap.find("Alice");
    if (it != myMap.end()) {
        std::cout << "Alice'ın yaşı: " << it->second << std::endl; // Anahtarın değeri
    } else {
        std::cout << "Alice bulunamadı." << std::endl;
    }

    return 0;
}
```

#### Sonuç

C++ Map, anahtar-değer çiftlerini depolamak ve hızlı bir şekilde erişim sağlamak için ideal bir veri yapısıdır. Eleman ekleme, çıkarma ve arama işlemleri oldukça hızlı bir şekilde gerçekleştirilebilir.
