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

C++ STL vector 完整使用指南

     編輯:關於C++

vector 簡介

vector 是 STL 中最常用的順序容器,底層由動態數組實現,支持隨機訪問(下標操作),可存放任意類型元素。與靜態數組不同,vector 會自動管理內存,隨元素插入自動擴容。

內存擴容機制

  • 初始容量通常為 0 或指定大小。
  • 當 size() == capacity() 時再插入元素,會重新分配約 1.5~2 倍的新內存,將舊元素拷貝/移動過去,釋放舊內存。
  • 此過程導致所有迭代器、指針、引用失效。
  • 可用 reserve(n) 預分配內存,避免頻繁擴容提升性能。

常用操作總表

操作說明
v.size()當前元素個數
v.capacity()已分配容量
v.empty()是否為空
v[i] / v.at(i)訪問元素(at 會邊界檢查)
v.front() / v.back()首/尾元素
v.push_back(x)尾部插入
v.pop_back()刪除尾部
v.insert(pos, x)pos 前插入 x
v.erase(pos) / v.erase(beg, end)刪除元素
v.clear()清空
v.resize(n)調整大小
v.reserve(n)預留容量
v.swap(v2)交換內容
v.begin() / v.end()迭代器
v.rbegin() / v.rend()反向迭代器

初始化方式

vector<int> v1;                 // 空
vector<int> v2(v1);             // 拷貝
vector<int> v3(10);             // 10 個默認值
vector<int> v4(10, 5);          // 10 個 5
vector<int> v5(arr, arr+5);     // 從數組區間構造
vector<int> v6{1,2,3,4,5};      // C++11 列表初始化

迭代器遍歷示例

for (auto it = v.begin(); it != v.end(); ++it)
    cout << *it << ' ';
for (auto &x : v)  // C++11 範圍 for
    cout << x << ' ';

性能優化建議

  1. 預留容量:大量 push_back 前調用 reserve(),避免多次擴容拷貝。
  2. 縮容釋放內存:vector<int>(v).swap(v) 或 C++11 v.shrink_to_fit()。
  3. 避免迭代器失效:插入/刪除後重新獲取迭代器;或使用下標訪問。

常見陷阱

  • v[i] 不做邊界檢查,v.at(i) 會拋出異常。
  • 擴容後所有迭代器、指針、引用失效,繼續使用會導致未定義行為。
  • pop_back 不減少 capacity,內存不會自動釋放。

總結

vector 結合了數組的高效隨機訪問與動態內存管理的靈活性,是 C++ 開發中最基礎也最重要的容器。掌握其擴容機制、迭代器失效規則及優化技巧,能寫出高性能、健壯的代碼。

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