c++ vector 教學

建立 vector

  • 引入 vector : #include <vector>
  • 宣告 : vector<dataType> vec
  • 宣告 + 初始化 : vector<dataType> vec={data1, data2}
使用範例 :
#include <iostream>
#include <vector>
using namespace std;

int main(){
    
    vector<int> vec1;
    vector<int> vec2={1,2,3};

    return 0;
}

新增及刪除元素

  • vec.push_back(val) : 將元素(val) 插入 vector 的尾端
  • vec.insert(position, val) : 將元素插入指定的位子(position)
  • vec.pop_back() : 刪除 vector 最尾端的元素
  • vec.erase(position) : 刪除 vector 中位在 position 的元素
  • vec.erase(first, last) : 刪除 vector 中在 first~last 的元素
  • vec.clear() : 清空所有元素
使用範例 :
#include <iostream>
#include <vector>
using namespace std;

int main(){
    
    vector<int> vec;

    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);           // vec = 1 2 3
    vec.insert(vec.begin(), 4); // vec = 4 1 2 3

    vec.pop_back();             // vec = 4 1 2
    vec.erase(vec.begin());     // vec = 1 2

    vec.clear();                // vec = 
}

存取元素

  • vec.front() : 取得 vector 的第一個元素
  • vec.back() : 取得 vector 的最後一個元素
  • vec[i] : 取得 vector 的第 i 個元素
  • vec.at(i) : 取得 vector 的第 i 個元素
使用範例 :
#include <iostream>
#include <vector>
using namespace std;

int main(){

    int x;
    vectorr<int> vec={1,2,3,4,5};

    x=vec.front(); // x=1
    x=vec.back();  // x=5
    x=vec[2];      // x=3
    x=vec.at(3);   // x=4

    return 0;
}

修改元素

  • vec[i]=val : vector 的第 i 個元素改成 val
  • vec.at(i)=val : vector 的第 i 個元素改成 val
使用範例 :
#include <iostream>
#include <vector>
using namespace std;

int main(){

    int x;
    vectorr<int> vec={1,2,3,4,5};

    vec[0] = 100;    // vec = 100 2 3 4 5
    vec.at(3) = 0;   // vec = 100 2 3 0 5

    return 0;
}

走訪 vector

下列方法都可以用~
#include <iostream>
#include <vector>
using namespace std;

int main(){

    vectorr<int> vec={1,2,3,4,5};
    
    // method 1
    for (int i=0; i<vec.size(); i++) {
        cout<<vec[i]<<endl;
    }

    // method 2
    for(auto i:vec){
        cout<<i<<endl;
    }

    // method 3
    for (auto iter=vec.begin(); iter!=vec.end(); iter++) {
        cout<<*iter<<endl; // 需要 dereference
    }
    return 0;
}

其他

  • vec.size() : vector 的大小
  • vec.empty() : 判斷 vector 是不是空的
  • vec.begin() : 指向 vector 第一個元素的 iterator
  • vec.end() : 指向 vector 最尾端元素的下一個位置的 iterator
使用範例 :
#include <iostream>
#include <vector>
using namespace std;

int main(){

    vectorr<int> vec={1,2,3,4,5};

    vec.size();    // 5
    vec.empty();   // false
    *vec.begin();  // 1

    return 0;
}