vector
是 C++ 標準模板庫(STL, Standard Template Library)的成員之一,它是一種動態大小的陣列,支援隨機存取,適合需要靈活調整大小的場景。它的記憶體配置是連續的,查詢效率高,但插入或刪除非尾端元素時效率較低。
特性
- 動態調整大小,無需手動管理記憶體。
- 支援隨機存取(透過索引)。
- 尾端插入與刪除操作效率高(O(1))。
- 非尾端插入與刪除效率較低(O(n))。
成員函數介紹
- push_back:將元素添加到向量尾端。
- pop_back:移除向量尾端的元素。
- size:返回向量中元素的數量。
- erase:移除指定位置或範圍的元素。
- insert:在指定位置插入新元素。
- resize:調整向量的大小,可擴大或縮小,若擴大則指定新增元素的初始值。
需要注意的是 vector
沒有 find
這個成員函數,如果需要在 vector
裡尋找指定元素的話,要用包含在 <algorithm>
裡面的 find
函數。
用法範例
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// 宣告一個整數向量
vector<int> vec;
// vector<int> vec(5, 0); // 也可以在宣告時直接指定向量的大小5和每個元素的初始值0
// 在尾端新增元素
vec.push_back(10);
vec.push_back(20);
vec.push_back(30); // 此行執行後vec=[10,20,30]
// 透過索引存取與修改元素
vec[1] = 25; // 此行執行後vec=[10,25,30]
// 取得向量大小
int size = vec.size(); // vec.size()=3
// 遍歷向量
cout << "向量內容:";
for (int v : vec) {
cout << v << " ";
}
cout << endl;
// 刪除指定索引的元素
vec.erase(vec.begin() + 1); // 刪除索引為1的元素,此行執行後vec=[10,30]
// 在指定索引插入元素
vec.insert(vec.begin() + 1, 5); //在索引1插入5,此行執行後vec=[10,5,30]
// 刪除尾端元素
vec.pop_back(); // 此行執行後vec=[10,5]
// 調整向量的大小,可擴大或縮小,若擴大則指定新增元素的初始值
vec.resize(3, 0); // 調整向量的大小為3,新增的元素的初始值為0,此行執行後vec=[10,5,0]
// 尋找指定元素
if (find(vec.begin(), vec.end(), 5) != vec.end())
{
// 元素存在
}
else
{
// 元素不存在
}
return 0;
}
適用場景
- 需要動態調整陣列大小時。
- 頻繁進行尾端操作或隨機存取時。