順序容器按元素在容器中的位置順序存取,主要有 vector, deque, list, forward_list (C++11)。
| 容器 | 隨機存取 | 頭尾插刪 | 中間插刪 | 內存連續 | 典型場景 |
|---|---|---|---|---|---|
| vector | O(1) | 尾 O(1) / 頭 O(n) | O(n) | 是 | 默認首選,需快速隨機存取 |
| deque | O(1) | 雙端 O(1) | O(n) | 分段連續 | 雙端操作頻繁,需隨機存取 |
| list | O(n) | 雙端 O(1) | O(1) (有迭代器) | 否 | 頻繁中間插刪,無隨機存取需求 |
| forward_list | O(n) | 單向頭部 O(1) | O(1) (有迭代器) | 否 | 單向鏈表,更省內存 |
c(n), c(n, val), c(beg, end), c(il) (C++11 列表初始化)。size(), empty(), max_size(), resize()。front(), back(), operator[] (vector/deque), at() (帶檢查)。push_back/pop_back, push_front/pop_front (deque/list), insert, erase, clear, assign。swap(c):常數時間交換內容(C++11 後 noexcept)。begin/end, cbegin/cend, rbegin/rend。capacity() 當前分配空間;reserve(n) 預留空間,避免多次擴容。shrink_to_fit() (C++11) 釋放多餘容量。int arr[] = {1,2,3};
vector<int> v(begin(arr), end(arr)); // C++11
// 或 v.assign(begin(arr), end(arr));
順序容器核心在於 隨機存取 vs 插刪效率 的權衡。默認用 vector,雙端操作用 deque,大量中間插刪用 list。熟練掌握迭代器失效規則、容量管理、算法配合(sort, find, copy 等)是高效使用 STL 的基礎。