# Vector、Sort [C++] ## 常見屬性 `vector.size()` `vector.empty()` 檢視vector是否為空 `vector.front()` 回傳vector第一個元素的值 `vector.back()` 回傳vector最後一個元素的值 `vector.push_back()` 新增元素至vector的尾端 `vector.pop_back()` 刪除vector最後一個元素 `vector.insert()` 插入一個或多個元素至vector的任意位置 `vector.erase()` 刪除vector中的一個或多個元素 `vector.clear()` 清空所有元素 `vector.begin()` 回傳第一個值的位址 `vector.end()` 回傳最後一個值的位址 ## 宣告方法 > vector<type> name = {value} ## 範例 ```c #include <iostream> #include <vector> #include <algorithm> using namespace std; vector<int> number = {10, 20, 30}; vector<int> zeros(10); 建立長度為10的vector,初始值為0 vector<int> ones(10, 1); 建立長度為10的vector,初始值為1 vector<int> v2(v1); 等同於vector<int> v2 = v1的意思 number.insert(number.end()-1, 50) number.insert(number.begin()+3, 2, 40) 在第四個位置插入2個40 sort(number.begin(), number.end()) 排序 ``` ### 備註 :::info :bulb: C++ : sort(begin, end, 可再自行加入方法) https://shengyu7697.github.io/std-sort/ python : sort、sorted ::: ## :memo:Note ### ==讀取方式比較== vector **[ i ]** vs vector.**at(i)** [ ]operator有可能會出錯,撰寫較嚴肅、安全性較高的程式時使用 at() ### ==iterator(疊代器)介紹== 是一種資料形態,其意義為記憶空間位址,使用方法如指標pointer* #### Example 假如有一個陣列長這樣 ```c int arr[] = {1, 2, 3, 4, 5}; int len = sizeof(arr) / sizeof(int); # len = 5 int *begin = arr + 0; int *end = arr + len; # begin 指向的是 1 那個位置 # end 指向的是 5 後面沒有東西的那個位置 int *ptr; for(ptr = begin ; ptr != end ; ptr++) printf("%d", *ptr); # 1, 2, 3, 4, 5 ``` 如果用矩陣來表示 ```c #將arr的第一個元素到第五個元素複製給整數向量vec vector<int> vec(arr, arr+5); vector<int>::iterator begin = vec.begin(); vector<int>::iterator end = vec.end(); #呼叫iterator vector<int>::iterator it; for(it=begin ; it!=end ; it++) printf("%d", *it); # 1, 2, 3, 4, 5 ``` ### 備註 :::info :bulb: C++的vector實則為python的list,不需再使用array儲存資料。 ::: <br> ###### tags: `C`