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

C++ STL 容器全景總結:順序與關聯容器詳解

     編輯:關於C語言

C++ 容器分兩大類:順序容器(按位置存取)與 關聯容器(按鍵值高效查找)。順序容器含適配器。

一、順序容器

1. 定義與初始化

#include  // vector
#include    // list
#include   // deque

vector vi; list li; deque di;

初始化方式豐富:空容器、複製構造、迭代器區間、n 個值 t、n 個值初始化元素。

2. 迭代器運算

  • 所有順序容器通用:解引用 *iter、成員存取 iter->mem、遞增遞減、相等比較。
  • vector/deque 專屬:算術運算 iter + n、iter - n、復合賦值、減法得距離、關係運算 < > <= >=。

迭代器失效:修改容器結構的操作會使指向被移動元素的迭代器失效。

3. 核心操作

4. vector 容量管理

  • size():當前元素數;capacity():重新分配前可容納元素數,通常 > size。
  • reserve(n):預留空間,避免頻繁重新分配(預設策略為容量加倍)。

5. 容器選用建議

  1. 需隨機存取 → vector 或 deque
  2. 中間頻繁增刪 → list
  3. 首尾增刪 → deque
  4. 輸入時中間插入、後期隨機存取 → 先 list 再複製到 vector
  5. 既需隨機存取又需中間增刪 → 視主導操作而定

6. 容器適配器

  • stack:LIFO,基於 deque。操作:push, pop, top, empty, size。
  • queue:FIFO,基於 deque。操作:push, pop, front, back, empty, size。
  • priority_queue:優先級隊列,基於 vector。操作:push, pop, top, empty, size。

預設構造函數與接受容器參數的構造函數。

二、關聯容器

1. pair

雙元組模板 pair<T1, T2>,支援字典序比較、相等判斷、make_pair 建構。成員 first、second 為公有資料成員。

2. map(鍵值對集合,鍵唯一)

  • 定義:map<string, int> word_count;
  • 鍵類型需支援 < 運算子(嚴格弱序)。
  • value_type 為 pair<const Key, Value>,鍵不可修改。
  • 插入:insert 返回 pair<iterator, bool>;下標操作若鍵不存在會自動插入值初始化元素。
  • 查找:find 返回迭代器,count 返回 0/1。
  • 刪除:erase(key)、erase(iterator)、erase(range)。

3. set(鍵即值,唯一)

  • 初始化自動去重。無下標操作,用 find/count 查找。

4. multimap / multiset(鍵可重複)

  • 相同鍵的元素相鄰存放。提供 lower_bound、upper_bound、equal_range 區間查詢。

本文出自「我的學習筆記」博客,轉載請保留出處:https://6924918.blog.51cto.com/6914918/1275726

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
操作函數說明
添加元素push_back, push_front(list/deque), insertinsert 可插入單值、n 個值、區間元素
大小操作size, max_size, empty, resizeresize 可指定填充值
存取元素front, back, operator[], at(vector/deque)at 有邊界檢查
刪除元素erase, clear, pop_back, pop_front(list/deque)erase 返回下一有效迭代器
賦值與交換operator=, swap, assignswap 極快,assign 重設內容