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

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

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              20 隨筆 :: 47 文章 :: 22 評論 :: 0 Trackbacks
            /*deque: 是一個double-ended queue,
                1)支持隨即存取,也就是[]操作符,
                2)支持兩端操作,push(pop)-back(front),在兩端操作上與list效率差不多

                因此在實際使用時,如何選擇這三個容器中哪一個,應(yīng)根據(jù)你的需要而定,一般應(yīng)遵循下面的原則: 
                1、如果你需要高效的隨即存取,而不在乎插入和刪除的效率,使用vector 
                2、如果你需要大量的插入和刪除,而不關(guān)心隨即存取,則應(yīng)使用list 
                3、如果你需要隨即存取,而且關(guān)心兩端數(shù)據(jù)的插入和刪除,則應(yīng)使用deque。
            */


            #include 
            <iostream>
            #include 
            <deque>
            using namespace std;

            void printDeque(deque<int> d)
            {
            //使用下標
            //for (unsigned int i = 0; i < d.size(); i++)
            //{
            // cout<<"d["<<i<<"] = "<<d[i]<<", ";
            //}

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

            //使用迭代器指針
            deque<int>::iterator *pIter = new deque<int>::iterator;
            if ( NULL == pIter )
            {
               
            return ;
            }

            for (*pIter = d.begin(); *pIter != d.end(); (*pIter)++)
            {
               cout
            <<"d["<<*pIter - d.begin() <<"]="<<**pIter<<"";
            }

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


            cout
            <<endl;
            }


            void main()
            {
            //創(chuàng)建deque
            deque<int> d1; //創(chuàng)建一個沒有任何元素的deque對象
            deque<int> d2(10);//創(chuàng)建一個具有10個元素的deque對象,每個元素值為默認
            deque<double> d3(105.5); //伊妹一個具有10個元素的deque對象,每個元素的初始值為5.5
            deque<double> d4(d3); //通過拷貝一個deque對象的元素值, 創(chuàng)建一個新的deque對象
            int iArray[] = {1113192327};
            deque
            <int> d5(iArray, iArray+5);//將迭代器區(qū)間[first, last)所指的元素拷貝到一個新創(chuàng)建的deque對象中

            //初始化賦值:同vector一樣,使用尾部插入函數(shù)push_back()
            for (int i = 1; i < 6 ; i++)
               d1.push_back(i
            *10);
            //遍歷元素: 1-下標方式 2-迭代器方式 反向遍歷(略)
            cout<<"printDeque(d1) : "<<endl;
            printDeque(d1);

            //元素插入:尾部插入用push_back(),頭部插入用push_front(),其它位置插入用insert(&pos, elem)
            cout<<"d1.push_front(100): "<<endl;
            d1.push_front(
            100);
            printDeque(d1);
            cout
            <<"d1.insert(d1.begin()+3, 200): "<<endl; //支持隨機存取(即[]操作符),所以begin()可以+3
            d1.insert(d1.begin()+2,200);
            printDeque(d1);

            //元素刪除 尾部刪除用pop_back();頭部刪除用pop_front(); 
            //任意迭代位置或迭代區(qū)間上的元素刪除用erase(&pos)/erase(&first, &last);刪除所有元素用clear();
            cout<<"d1.pop_front(): "<<endl;
            d1.pop_front();
            printDeque(d1);

            cout
            <<"d1.erase(d1.begin()+1): "<<endl;
            d1.erase(d1.begin()
            +1); //刪除第2個元素d1[1]
            printDeque(d1);

            cout
            <<"d1.erase(d1.begin(), d1.begin() + 2) = "<<endl;
            d1.erase(d1.begin(), d1.begin() 
            + 2);
            printDeque(d1);

            cout
            <<"d1.clear() :"<<endl;
            d1.clear();
            printDeque(d1);


            //其它常用
            cout<<"其它常用用法: "<<endl;
            int flag = 0;
            while(flag < 2)
            {
               
            if (0 == flag )
               
            {
                
            for (int i = 1; i < 6 ; i++//恢復(fù)
                 d1.push_back(i*10);
               }

               
            else
               
            {
                d1.clear();
                cout
            <<"after d1.clear() , d1.front(), d1.back() is abnormal! other info.:"<<endl;
               }

               cout
            <<"d1.empty() = "<<d1.empty()<<endl;
               cout
            <<"d1.size() = "<<d1.size()<<endl;
               cout
            <<"d1.max_size() = "<<hex<<d1.max_size()<<endl;
               
            if (!d1.empty())
               
            {
                cout
            <<"d1.front() = "<<d1.front()<<endl;
                cout
            <<"d1.back() = "<<d1.back()<<endl;
               }

              
               flag
            ++;
              
            }


            //交換
            cout<<"d1.swap(d5)= "<<endl;
            d1.swap(d5);
            cout
            <<"d1 = ";
            printDeque(d1);
            cout
            <<"d5 = ";
            printDeque(d5);
            //printDeque(d)

            }

            posted on 2010-02-07 23:58 胡雨田 閱讀(1867) 評論(0)  編輯 收藏 引用 所屬分類: 編程技巧
            亚洲精品无码专区久久同性男| av色综合久久天堂av色综合在 | 久久精品国产只有精品2020| 久久久亚洲欧洲日产国码aⅴ| 久久精品国产亚洲av影院| 国产精品久久久久一区二区三区| 亚洲人AV永久一区二区三区久久| 精品久久久久久中文字幕人妻最新| 久久国产免费观看精品| 久久久久青草线蕉综合超碰| 久久久久久久尹人综合网亚洲| 欧美成人免费观看久久| 91久久精一区二区三区大全| 久久只这里是精品66| 久久久久久久综合日本亚洲 | 人人狠狠综合久久亚洲88| 久久无码AV中文出轨人妻| 亚洲狠狠综合久久| 精品久久久久香蕉网| 亚洲精品tv久久久久久久久 | 久久国产AVJUST麻豆| 国内精品久久久久久久久电影网 | 国産精品久久久久久久| 国产精品久久亚洲不卡动漫| 亚洲精品乱码久久久久久按摩 | 999久久久国产精品| 久久久久久久综合日本亚洲| 久久久久亚洲AV片无码下载蜜桃 | 91精品国产综合久久精品| 久久久久亚洲av无码专区| 99久久超碰中文字幕伊人 | 国产一区二区三区久久| 亚洲欧美一区二区三区久久| 免费国产99久久久香蕉| 国产日产久久高清欧美一区| 久久亚洲AV成人出白浆无码国产 | 欧美黑人激情性久久| 久久久这里有精品| 亚洲色婷婷综合久久| 久久精品无码午夜福利理论片| 久久久一本精品99久久精品88|