• <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>

            huyutian

            他強(qiáng)由他強(qiáng),清風(fēng)拂山崗;他橫由他橫,明月照大江。他自狠來他自惡,我自一口真氣足

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              20 隨筆 :: 47 文章 :: 22 評(píng)論 :: 0 Trackbacks
            /*
                Vector: 它就是數(shù)組的一個(gè)泛化推廣, 等同于數(shù)組,它擁有一段連續(xù)的內(nèi)存空間,并且起始地址不變,
            優(yōu)點(diǎn):1)很好的支持隨機(jī)存取,即[]操作符,查詢操作高效
            缺點(diǎn):1)插入/刪除會(huì)造成內(nèi)存塊的拷貝,效率較低,(尾部元素除外)
                2)內(nèi)存空間不夠時(shí),需要重新申請(qǐng)一塊足夠大的內(nèi)存并進(jìn)行內(nèi)存的拷貝,大大影響了vector的效率
            */

            #include 
            <iostream>
            #include 
            <vector>
            #include 
            <algorithm>

            using namespace std;

            void printVector(vector<int> v1)
            {
            //使用下標(biāo)方式
            //for (unsigned int i = 0; i < v1.size(); i++)
            //{
            // cout<<"v1["<<i<<"] = "<<v1[i]<<endl;
            //}

            //使用迭代器
            //vector<int>::iterator iter;
            //for (iter = v1.begin(); iter != v1.end(); iter++)
            //{
            // //cout<<"v1["<<iter-v1.begin()<<"] = "<<*iter<<endl;
            // cout<<"v1["<<iter-v1.begin()<<"]"<<"="<<*iter<<", ";
            //}
            //cout<<endl;

            //使用迭代器指針
            //vector<int>::iterator *pIter; //Error,迭代器指針需要分配內(nèi)存才能使用,
                         
            //或者通俗的說pIter未實(shí)現(xiàn)時(shí),*pIter是不確定的,運(yùn)行時(shí)對(duì)其賦值必須會(huì)發(fā)生異常
            vector<int>::iterator *pIter = new vector<int>::iterator; 
            if(NULL == pIter)
            {
               
            return;
            }

            for(*pIter = v1.begin(); *pIter != v1.end(); (*pIter)++//此處若寫成*pIter++是不對(duì)的,因?yàn)?+優(yōu)化級(jí)別較高
            {
               cout
            <<**pIter<<"";
            }

            if (NULL != pIter)
            {
               delete pIter;
               pIter 
            = NULL;
            }

            cout
            <<endl;
            }


            void reversePrintVector(vector<int> vec)
            {
            vector
            <int>::reverse_iterator revIter;
            for (revIter = vec.rbegin(); revIter != vec.rend(); revIter++)
            {
               cout
            <<"v["<<revIter-vec.rbegin()<<"]="<<*revIter<<"";
            }

            cout
            <<endl;
            }

            int main()
            {
            //創(chuàng)建
            vector<int> v1; //創(chuàng)建空的vector對(duì)象
            vector<int> v2(10); //創(chuàng)建具有10個(gè)元素的vector對(duì)象
            vector<double> v3(109.1); //創(chuàng)建具有10個(gè)元素的vector對(duì)象,每個(gè)元素的值為9.1
            vector<double> v4(v3); //通過拷貝一個(gè)V3對(duì)象的各個(gè)元素值,創(chuàng)建一個(gè)新的vector對(duì)象
            int iArray[] = {1113 , 192327};
            vector
            <int> v(iArray, iArray + 5);//通過拷貝迭代器區(qū)間[first, end)的元素值,創(chuàng)建新的vector對(duì)象

            //初始化----用push_back,在容器的尾端插入新元素
            v1.push_back(3);
            v1.push_back(
            10);
            v1.push_back(
            19);

            //遍歷訪問:1-下標(biāo)方式(略)
            //遍歷訪問之2:迭代器方式, 建議使用此方式并熟練應(yīng)用之
            cout<<"printVector(v1): "<<endl; 
            printVector(v1);

            //反向遍歷之迭代器方式
            cout<<"reversePrintVector(v1):"<<endl;
            reversePrintVector(v1);

            //插入元素:用insert(&pos, elem)
            cout<<"v1.insert(v1.begin() + 1, 100): "<<endl;
            v1.insert(v1.begin() 
            + 1100);
            printVector(v1);

            //刪除元素: 尾部元素刪除用pop_back();單個(gè)元素刪除用erase(&pos);
            //[first, last)區(qū)間元素刪除用erase(&first, &last); 整體刪除用clear();
            cout<<"v1.erase(v1.begin() + 1): "<<endl;
            v1.erase(v1.begin() 
            + 1);
            printVector(v1);
            cout
            <<"v1.pop_back():"<<endl;
            v1.pop_back();
            printVector(v1);

            //查找函數(shù):由外部算法提供
            vector<int>::iterator iter;
            cout
            <<"find(v1.begin(), v1.end(), 2) = "<<endl;
            iter 
            = find(v1.begin(), v1.end(), 10);
            if (iter != v1.end())
               cout
            <<"find "<<*iter<<" at index: "<<iter-v1.begin()<<endl;
            else
               cout
            <<"not find"<<endl; 

            cout
            <<"v1.empty() = "<<v1.empty()<<endl;
            cout
            <<"其它:\nv1.empty() = "<<v1.empty()<<", v1.size() = "<<v1.size()<<", v1.max_size() =(hex)"<<hex<<v1.max_size()<<endl;
            cout
            <<"head-elem="<<dec<<v1.front()<<endl;
            cout
            <<"tail-elem="<<v1.back()<<endl;

            //清空
            cout<<"v1.clear() "<<endl;
            v1.clear();
            cout
            <<"v1.size() = "<<v1.size()<<", v1.empty()="<<v1.empty()<<endl;
            }



            ////////////////////////////////////運(yùn)行結(jié)果////////////////////////////////////////////////////////
            printVector(v1):
            31019,
            reversePrintVector(v1):
            v[
            0]=19, v[1]=10, v[2]=3,
            v1.insert(v1.begin() 
            + 1100):
            31001019,
            v1.erase(v1.begin() 
            + 1):
            31019,
            v1.pop_back():
            310,
            find(v1.begin(), v1.end(), 
            2=
            find 
            10 at index: 1
            v1.empty() 
            = 0
            其它:
            v1.empty() 
            = 0, v1.size() = 2, v1.max_size() =(hex)3fffffff
            head
            -elem=3
            tail
            -elem=10
            v1.clear()
            v1.size() 
            = 0, v1.empty()=1
            posted on 2010-02-08 00:00 胡雨田 閱讀(2010) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 編程技巧
            国产国产成人精品久久| 国产香蕉97碰碰久久人人| 久久人做人爽一区二区三区| 人妻无码αv中文字幕久久琪琪布| 女人高潮久久久叫人喷水| 国产∨亚洲V天堂无码久久久| 久久国产精品99久久久久久老狼| 亚洲国产天堂久久综合网站| 久久精品中文字幕大胸| 久久国产高清字幕中文| 亚洲欧美伊人久久综合一区二区 | 污污内射久久一区二区欧美日韩| 模特私拍国产精品久久| 久久精品视频免费| 国产成人久久精品一区二区三区 | 久久精品国产秦先生| 亚洲国产精品无码久久久秋霞2| 久久久久久狠狠丁香| 无码国内精品久久人妻蜜桃| 日本国产精品久久| 91精品久久久久久无码| 人妻少妇久久中文字幕| 久久亚洲精品无码VA大香大香| 99热热久久这里只有精品68| 久久成人国产精品| 99久久无色码中文字幕人妻| 亚洲欧美另类日本久久国产真实乱对白| 久久亚洲美女精品国产精品| 亚洲精品国产字幕久久不卡| 亚洲第一永久AV网站久久精品男人的天堂AV| 中文精品久久久久国产网址| 精品久久777| 国产99精品久久| 嫩草影院久久国产精品| 欧美亚洲另类久久综合| 久久精品视频网| 青青草国产精品久久| 热99re久久国超精品首页| 青青青国产成人久久111网站| 欧美一区二区精品久久| 久久久中文字幕日本|