本帖最後由 鄭繼威 於 2024-7-8 16:34 編輯
STL 是 C++ 提供的一套標準模板函式庫,全名是 Standard Template Library,因為是用 Template 實作的,所以裡面什麼都可以裝。
Vector 可以看成是一個動態陣列,用法跟陣列很像,基本功能有 :
push_back: 把一個值加到尾巴
pop_back: 把尾巴的值移除掉
erase: 移除指定位置元素
insert: 新增指定位置元素
[]: 得到某一個位置的值
size: 得到目前長度
back: 得到尾巴的值
front: 得到頭的值
ex1:- #include <vector>
- using namespace std;
- int main(){
- vector<int> vec; // 宣告一個裝 int 的 vector
- // 現在 vec 是空的
- vec.push_back(10);
- vec.push_back(20); // 經過三次 push_back
- vec.push_back(30); // vec 是 [10, 20, 30]
- int length = vec.size(); // length = 3
- for(int i=0 ; i<length ; i++){
- cout << vec[i] << endl; // 輸出 10, 20, 30
- }
- }
複製代碼 ex2:- int main(){
- vector<int> vec;
- for(int i=0 ; i<5 ; i++){
- vec.push_back(i * 10); // [0, 10, 20, 30, 40]
- }
- for(int i=0 ; i<vec.size() ; i++){
- cout << vec[i] << endl; // 輸出 0, 10, 20, 30, 40
- }
- }
複製代碼 ex3:- int arr[] = {1, 2, 3, 4, 5};
- vector<int> vec(arr, arr+5); // vec = [1, 2, 3, 4, 5]
- // 把 0 放在 vec.begin() 的位置 -> [0, 1, 2, 3, 4, 5]
- vec.insert(vec.begin(), 0);
- // 在尾巴加三個 100 -> [0, 1, 2, 3, 4, 5, 100, 100, 100]
- vec.insert(vec.end(), 3, 100);
- // 移除第 0 個元素 -> [1, 2, 3, 4, 5, 100, 100, 100]
- vec.erase(vec.begin());
- // 移除最後一個元素 -> [1, 2, 3, 4, 5, 100, 100]
- vec.erase(vec.end() - 1);
- // 移除前五個元素 -> [100, 100]
- vec.erase(vec.begin(), vec.begin() + 5);
- cout << vec.size() << endl; // size = 2
複製代碼 |