• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            黎明的剔透里伸出了你沁清的曖昧

            Graphics|EngineDev|GameDev|2D&3D Art

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              60 隨筆 :: 1 文章 :: 18 評(píng)論 :: 0 Trackbacks
            vector應(yīng)用基礎(chǔ):
            頭文件:#include<vector>
            常用的public類型為iterator、const_iterator、reverse_iterator和const_reverse_iterator迭代器類型,可以直接通過vector<T>::iterator等方式使用

            創(chuàng)建vector對(duì)象
            :以下四個(gè)vector構(gòu)造函數(shù)均可創(chuàng)建一個(gè)vector對(duì)象
            (1)vector(const A&a=A())
            例如:vector<int> v;

            (2)vector(size_type n)

            vector<double> v(10);

            (3)vector(size_type n,const T&value)

            vector<double> v(10,9.3)

            (4)vector(const vector&)

            vector<char> v1(5,'k');
            vector<char> v2(v1);

            (5)vector(const inputiterator first,const inputiterator last,const A&a=A())

            int arry[]={1,2,3,4,5,6};
            vector<int> v(arry,arry+5);

            初始化賦值:
            vector提供的push_back函數(shù),常用來進(jìn)行初始化容器,push_back在容器的尾端插入新的元素value

             1 #include <iostream>
             2 #include <vector>
             3 using namespace std;
             4 int main(){
             5     vector<int> v;
             6     v.push_back(20);
             7     v.push_back(10);
             8     v.push_back (5);
             9 for(int i=0;i<v.size();i++)
            10         cout<<"a["<<i<<"]="<<v[i]<<endl;
            11     return 0;
            12 }

            元素的遍歷:
            迭代器方式的訪問時(shí)使用vector容器提供的iterator類型,定義一個(gè)迭代器變量,例如vector<int>::iterator i; 然后對(duì)迭代器進(jìn)行++操作,將迭代器從一個(gè)元素移動(dòng)到下一個(gè)元素位置,從而通過迭代器的*操作,將所有元素讀取出來
            vector提供了begin()和end()函,用于獲取首元素的迭代器和最后一個(gè)元素的下一個(gè)位置的迭代器。
            iterator begin();
            iterator end();
             1 #include <iostream>
             2 #include <vector>
             3 using namespace std;
             4 int main(){
             5     vector<int> v;
             6     v.push_back(20);
             7     v.push_back(10);
             8     v.push_back (5);  
             9     vector<int>::iterator i,iend;//起始和末尾迭代器
            10     iend=v.end();
            11     int j;
            12     for(i=v.begin(),j=0;i!=iend;i++,j++){
            13        cout<<"v["<<j<<"]="<<*i<<endl;//*i為迭代器方式的訪問
            14     }
            15     return 0;
            16 }



            元素的插入:
            不同于在vector容器尾插部添加元素的push_back 函數(shù),insert函數(shù)可在任意位置插入元素,由于插入時(shí)要先將插入位置后的元素后移,以空出一個(gè)位置進(jìn)行插入,因此insert比push_back函數(shù)耗時(shí)。
            iterator insert(iterator pos, const T&X);

            元素的刪除:
            vector容器提供了一個(gè)erase函數(shù),用來刪除迭代器pos所指的元素或者迭代器[first,last)的所有元素,原型如下:
            (1)iterator erase(iterator pos);
            (2)iterator erase(iterator first,iterator last);
            另外一個(gè)刪除元素的函數(shù)是void clear(),它調(diào)用erase函數(shù),將[begin(),end())區(qū)間的所有vector元素全部清除。
             1 #include <iostream>
             2 #include <vector>
             3 
             4 using namespace std;
             5 
             6 class MyVector{
             7     public:
             8         MyVector(char *name,int age){
             9           this->name=name;
            10           this->age=age;
            11         }
            12         ~MyVector(){}
            13     public:
            14         char *name;
            15         int age;
            16 };
            17 
            18 int main(){
            19     MyVector *pDog=new MyVector("dog",1);
            20     MyVector *pMonkey=new MyVector("monkey",2);
            21     MyVector *pChicken=new MyVector("chicken",3);
            22     MyVector *pSnake=new MyVector("snake",4);
            23 
            24     vector<MyVector *>v;
            25     
            26     v.push_back(pDog);
            27     v.push_back(pMonkey);
            28     v.push_back(pChicken);
            29     v.push_back(pSnake);
            30     
            31     v.erase(v.begin()+1);
            32     delete pMonkey;
            33 
            34     vector<MyVector*>::iterator i,iend;
            35     iend=v.end();
            36     for(i=v.begin();i!=iend;i++)
            37         cout<<(*i)->name<<' '<<(*i)->age<<endl;
            38     //清除所有vector元素
            39     v.clear();
            40         cout<<"執(zhí)行clear()"<<endl<<"所有vector元素均已全部清除"<<endl;
            41         return 0;
            42 }


            元素的反向遍歷:
            利用vector提供的反向迭代器reverse_iterator,以及相應(yīng)的rbegin()和rend()函數(shù),可反向遍歷vector容器的元素,rbegin()函數(shù)返回的迭代器指向反向遍歷的首元素,rend函數(shù)返回的迭代器則指向反向遍歷的尾部,原型如下:
            (1)reverse_iterator rbegin();
            (2)reverse_iterator rend();

            vector的交換:
            vector利用swap算法,實(shí)現(xiàn)交換兩個(gè)vector容器的swap 成員函數(shù)
            原型:void swap(vector &,vector &);

            其他常用函數(shù):
            bool empty();
            判斷vector是否為空 若容器沒有一個(gè)元素則返回true,后則返回false;
            size_type size();
            當(dāng)前vector容器的實(shí)際元素個(gè)數(shù)
            size_type max_size();
            系統(tǒng)所允許的vector容器的最大元素個(gè)數(shù)
            size_type capacity();
            當(dāng)前可容納的vector元素個(gè)數(shù)
            reference back()
            返回vector容器末元素,要求vector不能為空
            void pop_back();
            與push_back()函數(shù)相反,pop_back函數(shù)用于刪除末尾的一個(gè)容器元素
            posted on 2011-07-27 23:32 情絕格調(diào)(fresmaster) 閱讀(729) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Coding
            久久综合九色综合欧美狠狠| 久久久久一本毛久久久| 久久九九精品99国产精品| 99久久超碰中文字幕伊人| 久久97久久97精品免视看秋霞 | 香蕉久久夜色精品国产2020| 久久婷婷人人澡人人爽人人爱| 久久91精品国产91久久麻豆| 伊人久久无码中文字幕| 国产精品99久久久久久宅男| 99精品国产综合久久久久五月天| 免费国产99久久久香蕉| 亚洲人成网亚洲欧洲无码久久| 久久精品国产只有精品2020| 2021国产精品午夜久久| 国产综合精品久久亚洲| 97久久久精品综合88久久| 久久综合亚洲色一区二区三区| 91久久精品国产免费直播| 久久精品黄AA片一区二区三区| 久久无码专区国产精品发布| 久久精品国产色蜜蜜麻豆| 青青国产成人久久91网| 国产精品久久久久jk制服| 亚洲欧美日韩中文久久| 中文成人久久久久影院免费观看| 国产精品一区二区久久精品无码| 精品一区二区久久久久久久网站| 久久精品国产亚洲精品2020| 欧美精品久久久久久久自慰| 99蜜桃臀久久久欧美精品网站| 中文精品99久久国产| 亚洲国产精品狼友中文久久久| 日日狠狠久久偷偷色综合96蜜桃| 久久久91人妻无码精品蜜桃HD | 婷婷伊人久久大香线蕉AV| 久久精品国产亚洲AV久| 午夜欧美精品久久久久久久| 久久综合久久自在自线精品自| 久久天天躁狠狠躁夜夜躁2O2O| 九九精品99久久久香蕉|