創建與初始化
vector v1; // 空容器
vector v2(10); // 10 個預設值 0
vector v3(10, 2); // 10 個值為 2
vector v4(v3); // 拷貝構造
vector v5(v3.begin(), v3.end()); // 區間構造
容量與大小
v.size(); // 元素個數
v.capacity(); // 已分配容量
v.empty(); // 是否為空
v.resize(n); // 改變大小(不足補 0,超出截斷)
v.reserve(n); // 預留容量(避免頻繁擴容)
v.shrink_to_fit(); // C++11 釋放多餘容量
元素訪問
v[i]; // 無邊界檢查
v.at(i); // 有邊界檢查(越界拋出異常)
v.front(); // 首元素
v.back(); // 尾元素
v.data(); // C++11 返回底層數組指針
修改操作
v.push_back(val); // 尾部插入
v.pop_back(); // 尾部刪除
v.insert(pos, val); // 指定位置插入
v.erase(pos); // 刪除單個
v.erase(first, last); // 刪除區間
v.clear(); // 清空
v.swap(other); // 交換內容(O(1))
比較運算
v1 == v2; // 元素逐一比較
v1 != v2;
v1 < v2; // 字典序比較
v1 <= v2; v1 > v2; v1 >= v2;
遍歷方式
// 範圍 for (C++11)
for (auto &x : v) { ... }
// 迭代器
for (auto it = v.begin(); it != v.end(); ++it) { ... }
// 索引
for (size_t i = 0; i < v.size(); ++i) { ... }
性能提示
- 頻繁
push_back 前先 reserve,減少擴容拷貝。
- 中間插刪 O(n),若大量操作考慮
list 或 deque。
vector 是特化位壓縮容器,行為與普通 vector 不同,謹慎使用。