c++ map用法

海_纳百川發表於2024-11-06

std::map 是C++標準庫中的一個關聯容器,用於儲存鍵值對(key-value pairs)。它的特性和用途如下:

  1. 鍵值對儲存std::map 是一種關聯容器,每個元素都由一個唯一的鍵(key)和一個值(value)組成。鍵用於標識資料的唯一性,值是與鍵相關聯的資料。

    std::map<int, std::string> myMap;
    myMap[1] = "Apple";
    myMap[2] = "Banana";
    
  2. 有序性std::map 自動按照鍵的升序排序儲存元素,因此每次插入新元素時,元素會根據鍵的排序規則(預設使用operator<)放入適當位置。

  3. 鍵的唯一性:在 std::map 中,每個鍵都是唯一的,重複的鍵不會插入。如果嘗試插入具有相同鍵的元素,新的值會覆蓋原來的值。

  4. 底層實現std::map 通常基於紅黑樹等自平衡二叉搜尋樹實現,因此查詢、插入和刪除操作的時間複雜度為 (O(\log n)),適合頻繁查詢和排序的場景。

  5. 常用操作

    • 插入元素:使用 insert()operator[]、或 emplace() 方法。
    • 訪問元素:使用 operator[]at() 方法。
    • 查詢元素:使用 find() 方法。
    • 刪除元素:使用 erase() 方法。

例子

#include <iostream>
#include <map>
#include <string>

int main() {
    std::map<int, std::string> myMap;

    // 插入元素
    myMap[1] = "Apple";
    myMap[3] = "Cherry";
    myMap[2] = "Banana";

    // 遍歷並輸出元素
    for (const auto& pair : myMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    // 查詢元素
    auto it = myMap.find(2);
    if (it != myMap.end()) {
        std::cout << "Found: " << it->second << std::endl;
    }

    return 0;
}

輸出結果

1: Apple
2: Banana
3: Cherry
Found: Banana

在此例子中,myMap 中的元素根據鍵值自動排序,因此遍歷時按鍵的升序輸出。

相關文章