# 資料結構介紹 - Vector - by Peter Wang ###### tags: `資料結構介紹` ## vector 簡介 本篇介紹 C++ 的 std::vector 用法,C++ std::vector 教學如下: 要使用 vector 容器的話,需要引入的標頭檔:vector std::vector 是一個可以改變陣列大小的序列容器。 是陣列的升級版,主要因為 vector 能高效地對記憶體進行管理以及動態增長。 vector 其實就是將陣列和方法封裝形成的一個類別。 ## vector 初始化 ### 引入標頭檔 ```clike= #include <iostream> #include <vector> ``` ### 建立vector 這邊介紹幾種 vector 初始化,這裡是宣告一個 int(任何型態的都可以,這裡以int當範例)整數類型的 vector,裡面沒有任何元素(空),size 為 0 表示 vector 容器中沒有任何元素。 ```clike= vector <int> v1;//<可以填任何形態> vector <int> v2={1,2,3}; vector <int> v3=v2;//兩個vector相等 ``` ## vector 常用功能 以下為 std::vector 內常用的成員函式 ### push_back push_back:把元素加到尾巴,必要時會進行記憶體配置 ```clike= vector <int> v1; v1.push_back(1);//{1} v1.push_back(2);//{1,2} ``` ### pop_back pop_back:移除尾巴的元素 ```clike= vector <int> v1; v1.push_back(1);//{1} v1.push_back(2);//{1,2} v1.pop_back();//{1} ``` ### insert insert:插入元素 insert(插入地址,插入數值) ```clike= vector <int> v1; v1.push_back(1);//{1} v1.push_back(2);//{1,2} v1.pop_back();//{1} v1.insert(v1.begin()+1,2);//{1,2} ``` ### erase erase:移除某個位置元素, 也可以移除某一段範圍的元素 ```clike= vector <int> v1; v1.push_back(1);//{1} v1.push_back(2);//{1,2} v1.pop_back();//{1} v1.insert(v1.begin()+1,2);//{1,2} v1.erase(v1.begin());//{2} ``` ### size:回傳目前長度 size:回傳目前長度 ```clike= vector <int> v1; v1.push_back(1);//{1} v1.push_back(2);//{1,2} v1.pop_back();//{1} v1.insert(v1.begin()+1,2);//{1,2} v1.erase(v1.begin());//{2} cout<<v1.size();// 1 ``` ### clear:清空容器裡所有元素 clear:清空容器裡所有元素 ```clike= vector <int> v1; v1.push_back(1);//{1} v1.push_back(2);//{1,2} v1.pop_back();//{1} v1.insert(v1.begin()+1,2);//{1,2} v1.erase(v1.begin());//{2} cout<<v1.size();// 1 v1.clear(); cout<<v1.size();// 0 ``` ### empty empty:回傳是否為空 回傳 1 (true) vector是空的;回傳 0 (false) vector有東西 ```clike= vector <int> v1; v1.push_back(1);//{1} v1.push_back(2);//{1,2} v1.pop_back();//{1} v1.insert(v1.begin()+1,2);//{1,2} v1.erase(v1.begin());//{2} cout<<v1.size();// 1 v1.clear(); cout<<v1.size();// 0 cout<<v1.empty();// 1 ``` ## 備註 >[name=Peter Wang] >[time=Tue, Aug 31, 2021 2:08 PM]