O(1),尾部插入/刪除攤還 O(1),中間插入/刪除 O(n)(需移動元素)。O(log n),不支援隨機訪問(無 operator[])。// vector vector<int> v; v.insert(v.begin(), 1); // 必須指定位置 v.insert(v.begin(), 2); v.insert(v.begin(), 1); // 允許重複 // 遍歷:for (auto it=v.begin(); it!=v.end(); ++it) // set set<int> s; s.insert(1); // 可不指定位置 s.insert(2); s.insert(1); // 自動去重,只保留一個 1 // 遍歷:for (auto it=s.begin(); it!=s.end(); ++it) -- 不能用 it < s.end()
運行結果:vector 輸出 3 1 2 1(保留插入順序、允許重複);set 輸出 1 2 3(有序、去重)。
< 比較(隨機訪問迭代器)。<,只能用 != 判斷結束。ArrayList ≈ vector(新推薦),Vector 為舊類(同步、不推薦)。HashSet 基於 HashMap,無序、去重;TreeSet 基於紅黑樹,有序、去重(≈ C++ set)。| 需求 | 推薦容器 |
|---|---|
| 高頻隨機訪問、尾部增刪 | vector / ArrayList |
| 高頻中間增刪、順序遍歷 | list / LinkedList |
| 雙端增刪 | deque / ArrayDeque |
| 自動去重、需有序遍歷 | set / TreeSet |
| 自動去重、無序、極快查找 | unordered_set / HashSet |