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

C++ STL vector 完整用法指南:從構造到擦除的 30 個核心操作

     編輯:C++ 入門

基本概念

vector<T>:動態陣列,連續內存,支持隨機訪問,尾部增刪 O(1) 攤還,中間增刪 O(n)。

頭文件:#include <vector>,命名空間 std。

構造函數

vector v1;                 // 空
vector v2(10);             // 10 個 0
vector v3(10, 5);          // 10 個 5
vector v4(v3);             // 拷貝構造
vector v5(v3.begin(), v3.begin()+3); // 區間構造
vector v6 = {1,2,3,4,5};   // C++11 列表初始化

核心成員函數速查表

函數功能複雜度
push_back(val)尾部插入O(1) 攤還
pop_back()刪除尾部O(1)
insert(pos, val)pos 前插入O(n)
erase(pos)刪除 posO(n)
erase(beg, end)刪除區間O(n)
clear()清空O(n)
size()元素數O(1)
capacity()已分配容量O(1)
reserve(n)預留容量,避免重複擴容O(n)
resize(n, val)調整大小,不足填 valO(n)
front()/back()首/尾元素引用O(1)
at(i)帶邊界檢查訪問O(1)
operator[i]無檢查訪問O(1)
begin()/end()迭代器O(1)
rbegin()/rend()反向迭代器O(1)
swap(v)交換內容O(1)
assign(beg, end)區間賦值O(n)
assign(n, val)n 個 val 賦值O(n)

訪問元素:at() vs []

vector v = {1,2,3};
v.at(3);   // 拋出 out_of_range
v[3];      // 未定義行為(不檢查)
// 推薦調試用 at(),發布可用 [] 提速

刪除滿足條件元素:Erase-Remove 慣用法

#include 
vector v = {1,2,3,4,5,2,6};
v.erase(remove(v.begin(), v.end(), 2), v.end()); // 刪除所有 2
// remove 將不刪元素前移,返回新邏輯末尾,erase 物理刪除尾部垃圾

迭代器失效規則

  • push_back/insert/erase/resize/reserve 可能導致**所有**迭代器失效(內存重新分配)。
  • erase 返回下一有效迭代器,可安全繼續遍歷。

性能提示

  • 已知大致規模 → reserve() 避免多次擴容拷貝。
  • 頻繁頭部插刪 → 改用 deque 或 list。
  • 大量小對象 → 考慮 vector<unique_ptr<T>> 避免拷貝開銷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved