查看: 1548|回復: 1

[提問] c++ vector

[複製鏈接]
  • TA的每日心情
    開心
    2014-9-28 12:10
  • 簽到天數: 21 天

    [LV.4]偶爾看看III

    34

    主題

    181

    帖子

    776

    積分

    高級會員

    Rank: 4

    積分
    776

    程式設計達人 - 2014新手達陣

    發表於 2014-9-17 19:32:03 | 顯示全部樓層 |閱讀模式

    趕快加入我們來參與討論吧!

    您需要 登錄 才可以下載或查看,沒有帳號?加入我們

    x
    vector 完整用法
    林宇翔
    回復

    使用道具 檢舉

  • TA的每日心情
    開心
    2015-4-12 10:09
  • 簽到天數: 137 天

    [LV.7]常住居民III

    142

    主題

    686

    帖子

    3559

    積分

    邁向天堂

    蘇多門

    Rank: 8Rank: 8

    積分
    3559

    新手達陣台南一中資訊社程式設計達人 - 2014

    發表於 2014-9-17 20:45:41 | 顯示全部樓層
    本帖最後由 domen111 於 2014-9-17 21:06 編輯

    vector感覺就像陣列一樣,不過它的大小是可變動的,所以它可以自由的新增元素,一般的陣列只能修改裡面的元素並不能新增刪除
    那些v.begin()、v.end()是iterator的用法,如果看不懂可以再問(或者不管它也沒關係)
    [C++] 純文本查看 復制代碼
    //vector的各種用法
    
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main(int argc, char** argv) {
            vector<int> v; //宣告內容為int型態的vector
            v.clear(); //將vector的內容清空
            
            //將資料新增至vector(補在後面)
            v.push_back(11);
            v.push_back(22);
            v.push_back(22);
            v.push_back(99);
            v.push_back(11);
            v.push_back(22);
            
            v.insert(v.begin()+1,1); //在vector中間插入元素(效率會比較差)
            v.pop_back(); //移除最後一筆元素
            
            //將vector裡面的元素全部輸出的2種方法
            vector<int>::iterator iter;
            for(iter=v.begin();iter!=v.end();iter++){
                    cout << *iter << ", ";
            }
            cout<<endl;
            //或 
            for(int i=0; i<v.size() ; i++){
                    cout << v[i] << ", ";
            }
            cout<<endl;
            
            cout<<v.empty()<<endl; //vector是否為空
            
            v.reserve(50);//保留空間 
            cout<<v.size()<<endl;//6,vector大小
            cout<<v.capacity()<<endl;//50
            
            v.resize(50,123);//小於原來大小,會刪掉多餘元素,大於原來大小會補123(如果沒寫就補0)
            
            cout<<v.front()<<v.back()<<endl;//最前和最後一筆資料
            
            v.erase(v.begin()+3);
            v.erase(v.begin()+3,v.begin()+6);
    }
    
    
    


    蘇多門 domen111
    My Web: https://sites.google.com/site/domenprg/
    回復 支持 反對

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表