參考網址:http://edisonx.pixnet.net/blog/post/34345257-vector-%E5%BF%83%E5%BE%97%E6%95%B4%E7%90%86

 

#include <vector>
//using namespace std; 
// 若前面沒using namespace std;時,後面宣告vector時皆需要加std:: 


// 在後方加入元素:v.push_back(i); 
// 刪除最後元素:v.pop_back(); 
// 檢查是否為空:v.empty(); 
// 直接將v清空 :v.clear(); 
// 取得目前vector大小:v.size(); 
// 清除指定元素:v.erase(v.begin()+1); v.erase(v.end()-1); 
// v.begin() 表示為第0個元素,等同於 v[0] 
// v.end() 表示為最後一個元素,等同於 v[v.size()-1] 


// 普通vector用法
    std::vector<int> v1; // 宣告每個元素型態為int的vector
    for ( int i = 0; i < 100; i++) // 在後方新增元素100次
        v1.push_back(i); 


// structure在vector內的用法 
    typedef struct Arr{ // 定義一個structure
        int id; 
        int num; 
    } Arr; 

    std::vector<Arr> arr1; // 宣告每個元素型態為Arr(structure)的vector
    Arr tmp; 
    for(i=0; i<100; i++) { 
        // 需要先把值填滿一個暫存用的structure
        tmp.id = i+1; 
        tmp.num = i-1; 
        // 再把暫存用的structure加入到vector裡面
        arr1.push_back(tmp); 
    } 


// ---iterator用法--- 
    std::vector<int>::iterator it = v1.begin();
    // iterator表示一個指向vector(v1)某一元素的指標 
    // 但非真正意義上的指標,因為可以進行加減 
    // 見以下範例 
    for ( ; it != v1.end(); it++ ) 
        int k = it; // 這時候的it代表v[0~?],同時也因為vector型態是int,所以此it也等同於int




// structure + iterator 的用法
    std::vector<Arr>::iterator it = arr1.begin(); 
    for(; it != arr.end(); it++) { 
        it->id++; // 這時候的it代表一個structure的指標 
        it->num--; 
    } 

arrow
arrow
    創作者介紹
    創作者 跪著讀 的頭像
    跪著讀

    跪著讀

    跪著讀 發表在 痞客邦 留言(0) 人氣()