集合與映射 (Set & Map)
本章節將深入探討 C++ STL 中極為重要的關聯式容器。不同於 vector 的循序存取,set 與 map 透過紅黑樹(Red-Black Tree)實作,能在 \(O(\log N)\) 的時間複雜度內完成資料的搜尋、插入與刪除,是解決複雜演算法問題的利器。
1. Iterator 介紹#
在使用 Set 與 Map 之前,必須先理解迭代器(Iterator)的概念。本節介紹 begin()、end() 以及如何遍歷非連續記憶體的容器。
2. Set 的使用方式#
Set (集合) 能自動排序並過濾重複資料。本節說明其初始化、插入、刪除以及利用 count 或 find 判斷元素是否存在的技巧。
3. Map 的使用方式#
Map (映射) 提供了「鍵-值」(Key-Value) 的對應關係,就像一本自動排序的字典。本節介紹如何建立映射關係以及透過 Key 快速查找資料。
4. Multiset 與 Multimap#
當資料允許重複時(例如統計相同分數的人數),就需要使用 Multiset 與 Multimap。本節講解它們與普通容器的差異,以及 count 與 erase 的注意事項。