青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

統(tǒng)計

  • 隨筆 - 50
  • 文章 - 42
  • 評論 - 147
  • 引用 - 0

留言簿(6)

隨筆分類

文章分類

Link

搜索

  •  

積分與排名

  • 積分 - 167059
  • 排名 - 159

最新評論

閱讀排行榜

評論排行榜

簡版 容器vector 實現(xiàn)

vector為我們提供了可伸縮的順序存儲容器,在順序和隨機存儲方面效率很高

實現(xiàn)vector的關鍵在于實現(xiàn)內(nèi)存分配和對象構(gòu)造的分離,一般來講我們直接用new來構(gòu)造對象就經(jīng)歷了這兩個過程,而實現(xiàn)vector就需要我們先申請請到一片連續(xù)的內(nèi)存區(qū)域,然后在需要時在改內(nèi)存上構(gòu)造對象。這里用到allocator模板類
該類內(nèi)部封裝了如下方法:
template<typename elm>
class allocator
{
elm *allocate(size_t n)      //分配n個對象存儲空間
void construct(elm* p,size_t n) //在以p為開始的內(nèi)存上構(gòu)造n個對象
void destroy(elm* p) //銷毀對象
void deallocate(elm*p,size_t n) //釋放從p開始的n個對象內(nèi)存

}
有了這些就足夠了,一下就是簡版Vector實現(xiàn)LyVector
 1#include "stdafx.h"
 2#include "memory"
 3template <typename elmType>
 4class LyVector
 5{
 6private:
 7    elmType* _first;
 8    elmType* _last;
 9    elmType* _end;
10    allocator<elmType> _alc;
11public:
12    typedef typename elmType valueType;
13    LyVector():
14      _first(0),_last(0),_end(0){};
15    bool push_back(const elmType &t)
16    {
17        if (_last==_end)
18        {
19            size_t size=_last-_first;
20
21            size_t capacity=2*size;
22            if (capacity==0)
23            {
24                capacity=2;
25            }

26            //創(chuàng)建新的存儲區(qū)域并賦值
27            elmType* newElm=_alc.allocate(capacity);
28            if (newElm==NULL)
29            {
30                return false;
31            }

32            uninitialized_copy(_first,_last,newElm);
33            //刪除就有存儲區(qū)
34            for(;_first!=_last;)
35                _alc.destroy(--_last);
36            _alc.deallocate(_first,size);
37            _first=newElm;
38            _last=newElm+size;
39            _end=newElm+capacity;
40        }

41        _alc.construct(_last++,t);
42        return true;
43    }

44    void popBack()
45    {
46        if (size()==0)
47        {
48            _DEBUG_ERROR("No element fount");
49            return;
50        }

51        _alc.destroy(--_last);
52    }

53    
54    size_t size()
55    {
56        return _last-_first;
57    }

58    size_t capacity()
59    {
60        return _end-_first;
61    }

62    
63    elmType* operator[](size_t pos)
64    {
65        if (pos>=size())
66        {
67            _DEBUG_ERROR("out of range");
68            return NULL;
69        }

70        return _first+pos;
71    }

72
73
74    friend ostream& operator<<(ostream &o,const LyVector &im)
75    {
76        for (LyVector::valueType * first=im._first;first!=im._last;first++)
77        {
78            o<<*first<<endl;
79        }

80        return o;
81    }

82}
;

從實現(xiàn)看來,我覺得在使用vector,有以下幾點注意:
1. 最好為所存儲對象實現(xiàn)拷貝構(gòu)造函數(shù),不然在重新分配存儲空間時可能會產(chǎn)生內(nèi)存訪問違規(guī)問題,原因是對象在存入vector和在vecotr重新構(gòu)造是都會調(diào)用拷貝構(gòu)造函數(shù)
2. 對象存入是會在制定位置產(chǎn)生新的對象,不必擔心原對象生存期

posted on 2009-08-12 15:46 pear_li 閱讀(2508) 評論(0)  編輯 收藏 引用 所屬分類: C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久狠狠亚洲综合| 久久久欧美精品sm网站| 亚洲一区二区三区777| 亚洲国产视频a| 亚洲精品欧洲| 99riav久久精品riav| 一区二区免费在线播放| 亚洲在线播放| 久久久水蜜桃av免费网站| 久久影视精品| 欧美激情第二页| 亚洲狼人精品一区二区三区| 一二三四社区欧美黄| 中文网丁香综合网| 亚洲欧洲99久久| 久久午夜精品一区二区| 欧美精品一区二区三区久久久竹菊 | 久久综合久久综合久久| 欧美国产欧美亚洲国产日韩mv天天看完整 | 国产精品99久久久久久白浆小说 | 99v久久综合狠狠综合久久| 一区二区欧美精品| 欧美国产高清| 亚洲免费成人av| 亚洲欧美伊人| 免费日韩精品中文字幕视频在线| 欧美麻豆久久久久久中文| 国产精品一区二区在线观看网站 | 欧美日韩国产区一| 国产在线精品一区二区夜色| 亚洲人成在线观看一区二区| 午夜激情亚洲| 亚洲黄色一区| 亚洲视频在线一区| 久久久久一区二区三区四区| 久久综合色婷婷| 久久伊人一区二区| 久久久久国产精品www| 欧美顶级艳妇交换群宴| 国产精品一区免费在线观看| 亚洲精品欧美极品| 久久久久久久一区| 日韩一区二区久久| 久久视频在线看| 国产精品久久久久高潮| 亚洲精品系列| 欧美成人免费全部| 欧美一区二区三区免费观看视频 | 国产精品久久久999| 亚洲精品在线三区| 美女爽到呻吟久久久久| 亚洲欧美制服另类日韩| 欧美日本国产视频| 亚洲美女色禁图| 美女视频一区免费观看| 久久精品视频免费观看| 国产日韩亚洲欧美综合| 午夜视黄欧洲亚洲| 亚洲免费在线播放| 国产精品美女xx| 亚洲综合不卡| 亚洲特色特黄| 国产精品一二一区| 欧美一区二区三区在线播放| 亚洲一区二区免费在线| 国产精品理论片| 99精品视频免费观看| 亚洲精品午夜| 久久成人免费视频| 亚洲免费视频在线观看| 91久久精品美女| 美女尤物久久精品| 原创国产精品91| 欧美成年网站| 欧美激情欧美激情在线五月| 99精品国产在热久久婷婷| 亚洲国产日本| 欧美日韩在线视频观看| 欧美一站二站| 欧美在线视频日韩| 亚洲国产精彩中文乱码av在线播放 | 欧美女人交a| 亚洲午夜小视频| 亚洲自拍偷拍网址| 伊人久久久大香线蕉综合直播 | 亚洲小视频在线观看| 亚洲精品美女在线| 亚洲日韩第九十九页| 亚洲欧洲日夜超级视频| 欧美色欧美亚洲另类七区| 午夜久久久久久| 久久久免费av| 亚洲天堂久久| 久久久精品国产免大香伊| 亚洲乱码国产乱码精品精天堂 | 在线观看亚洲视频| 亚洲日韩成人| 国产日韩在线播放| 亚洲黄色在线| 国产欧美日韩精品在线| 亚洲成色www久久网站| 国产精品毛片| 欧美激情第10页| 国产一区自拍视频| 日韩视频―中文字幕| 国产亚洲欧美日韩精品| 亚洲国产美女久久久久| 国产伦精品一区二区三区视频孕妇| 久久最新视频| 国产精品久久久久久久久免费樱桃 | 日韩一级大片在线| 激情懂色av一区av二区av| 亚洲日本国产| 国产最新精品精品你懂的| 亚洲人午夜精品| 国产一区白浆| 亚洲网在线观看| 一区二区三区日韩精品视频| 久久不见久久见免费视频1| 一本色道久久综合亚洲精品不卡| 午夜一级久久| 欧美一区永久视频免费观看| 欧美日产国产成人免费图片| 免费在线一区二区| 国内免费精品永久在线视频| 亚洲专区一区二区三区| 亚洲一区三区视频在线观看| 欧美日韩国产成人在线免费| 欧美国产精品一区| 伊人精品成人久久综合软件| 亚洲欧美日韩另类| 午夜精品影院| 国产乱肥老妇国产一区二 | 麻豆国产精品777777在线| 久久精品网址| 国产日韩欧美在线看| 亚洲午夜女主播在线直播| 一区二区电影免费观看| 欧美经典一区二区| 亚洲精品1区| 一本久道久久久| 欧美日韩大片| 亚洲伦理在线观看| 欧美18av| 在线日韩欧美| 久久综合网络一区二区| 久久在线91| 亚洲理论在线| 国产精品mv在线观看| 在线一区观看| 久久成年人视频| 在线观看的日韩av| 免费中文日韩| 夜夜精品视频一区二区| 亚洲欧美大片| 国产一区二区三区av电影 | 久久亚洲午夜电影| 亚洲福利视频三区| 一区二区三区视频在线 | 亚洲国产小视频| 欧美精品乱码久久久久久按摩| 亚洲人成高清| 欧美一区二区精美| 国内一区二区在线视频观看| 免费高清在线一区| 99精品免费| 久久精品人人做人人爽电影蜜月| 精品粉嫩aⅴ一区二区三区四区| 美女精品网站| 亚洲视频二区| 欧美国产先锋| 亚洲欧美在线免费| 一区二区在线观看视频在线观看| 欧美高清视频免费观看| 一区二区欧美激情| 美女视频黄免费的久久| 一区二区日韩免费看| 国产午夜精品一区理论片飘花| 久久久久久有精品国产| 亚洲精品国精品久久99热一| 久久国产精品久久久久久久久久 | 欧美日韩ab| 久久婷婷亚洲| 亚洲一区二区高清| 亚洲韩国一区二区三区| 久久久91精品国产| 一区二区欧美精品| 亚洲国产成人tv| 国产精品一区毛片| 欧美日韩精品一本二本三本| 久久精品青青大伊人av| 99亚洲视频| 亚洲激情综合| 欧美91视频| 久久精品九九| 欧美一区二区日韩一区二区| 夜夜精品视频一区二区| 在线观看日韩av电影| 国产亚洲午夜| 国产欧美一区二区白浆黑人|