std::map
是C++標準庫中的一個關聯容器,用於儲存鍵值對(key-value pairs)。它的特性和用途如下:
-
鍵值對儲存:
std::map
是一種關聯容器,每個元素都由一個唯一的鍵(key)和一個值(value)組成。鍵用於標識資料的唯一性,值是與鍵相關聯的資料。std::map<int, std::string> myMap; myMap[1] = "Apple"; myMap[2] = "Banana";
-
有序性:
std::map
自動按照鍵的升序排序儲存元素,因此每次插入新元素時,元素會根據鍵的排序規則(預設使用operator<
)放入適當位置。 -
鍵的唯一性:在
std::map
中,每個鍵都是唯一的,重複的鍵不會插入。如果嘗試插入具有相同鍵的元素,新的值會覆蓋原來的值。 -
底層實現:
std::map
通常基於紅黑樹等自平衡二叉搜尋樹實現,因此查詢、插入和刪除操作的時間複雜度為 (O(\log n)),適合頻繁查詢和排序的場景。 -
常用操作:
- 插入元素:使用
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
中的元素根據鍵值自動排序,因此遍歷時按鍵的升序輸出。