Board logo

標題: STL 容器1_Vector [打印本頁]

作者: 鄭繼威    時間: 2024-6-26 18:54     標題: STL 容器1_Vector

本帖最後由 鄭繼威 於 2024-7-8 16:34 編輯

STL 是 C++ 提供的一套標準模板函式庫,全名是 Standard Template Library,因為是用 Template 實作的,所以裡面什麼都可以裝。
Vector 可以看成是一個動態陣列,用法跟陣列很像,基本功能有 :
push_back: 把一個值加到尾巴
pop_back: 把尾巴的值移除掉
erase: 移除指定位置元素
insert: 新增指定位置元素
[]: 得到某一個位置的值
size: 得到目前長度
back: 得到尾巴的值
front: 得到頭的值
[attach]18895[/attach]

ex1:
  1. #include <vector>
  2. using namespace std;

  3. int main(){
  4.     vector<int> vec;    // 宣告一個裝 int 的 vector
  5.                         // 現在 vec 是空的
  6.     vec.push_back(10);
  7.     vec.push_back(20);  // 經過三次 push_back
  8.     vec.push_back(30);  // vec 是 [10, 20, 30]

  9.     int length = vec.size();        // length = 3
  10.     for(int i=0 ; i<length ; i++){
  11.         cout << vec[i] << endl;     // 輸出 10, 20, 30
  12.     }
  13. }
複製代碼
ex2:
  1. int main(){
  2.     vector<int> vec;

  3.     for(int i=0 ; i<5 ; i++){
  4.        vec.push_back(i * 10);       // [0, 10, 20, 30, 40]
  5.     }

  6.     for(int i=0 ; i<vec.size() ; i++){
  7.         cout << vec[i] << endl;     // 輸出 0, 10, 20, 30, 40
  8.     }
  9. }
複製代碼
ex3:
  1. int arr[] = {1, 2, 3, 4, 5};
  2. vector<int> vec(arr, arr+5);    // vec = [1, 2, 3, 4, 5]


  3. // 把 0 放在 vec.begin() 的位置 -> [0, 1, 2, 3, 4, 5]
  4. vec.insert(vec.begin(), 0);


  5. // 在尾巴加三個 100 -> [0, 1, 2, 3, 4, 5, 100, 100, 100]
  6. vec.insert(vec.end(), 3, 100);


  7. // 移除第 0 個元素 -> [1, 2, 3, 4, 5, 100, 100, 100]
  8. vec.erase(vec.begin());


  9. // 移除最後一個元素 -> [1, 2, 3, 4, 5, 100, 100]
  10. vec.erase(vec.end() - 1);


  11. // 移除前五個元素 -> [100, 100]
  12. vec.erase(vec.begin(), vec.begin() + 5);

  13. cout << vec.size() << endl;     // size = 2
複製代碼

作者: 李宗儒    時間: 2024-7-8 16:42

此帖僅作者可見




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2