首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

《C++ Primer 第4版》讀書筆記 第9章:順序容器

     編輯:C++ 入門

《C++ Primer 第4版》讀書筆記 第9章:順序容器

順序容器按元素在容器中的位置順序存取,主要有 vector, deque, list, forward_list (C++11)。

1. 容器選擇指南

容器隨機存取頭尾插刪中間插刪內存連續典型場景
vectorO(1)尾 O(1) / 頭 O(n)O(n)是默認首選,需快速隨機存取
dequeO(1)雙端 O(1)O(n)分段連續雙端操作頻繁,需隨機存取
listO(n)雙端 O(1)O(1) (有迭代器)否頻繁中間插刪,無隨機存取需求
forward_listO(n)單向頭部 O(1)O(1) (有迭代器)否單向鏈表,更省內存

2. 通用操作

  • 構造: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)。

3. 迭代器與算法配合

  • 所有順序容器提供 begin/end, cbegin/cend, rbegin/rend。
  • 迭代器失效規則:
    • vector/deque:插入/刪除導致該位置及之後迭代器失效;重新分配導致所有失效。
    • list/forward_list:僅被刪除元素的迭代器失效,插入不影響現有迭代器。

4. vector 容量管理

  • capacity() 當前分配空間;reserve(n) 預留空間,避免多次擴容。
  • shrink_to_fit() (C++11) 釋放多餘容量。

5. 陣列與容器互轉

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 的基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved