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

統(tǒng)計

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

留言簿(6)

隨筆分類

文章分類

Link

搜索

  •  

積分與排名

  • 積分 - 167078
  • 排名 - 159

最新評論

閱讀排行榜

評論排行榜

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

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

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

}
有了這些就足夠了,一下就是簡版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)拷貝構造函數(shù),不然在重新分配存儲空間時可能會產(chǎn)生內存訪問違規(guī)問題,原因是對象在存入vector和在vecotr重新構造是都會調用拷貝構造函數(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>
            夜夜夜久久久| 久久久久在线观看| 国产乱人伦精品一区二区| 欧美日韩精品久久久| 欧美日本亚洲视频| 国产精品久久久久aaaa樱花| 欧美性色综合| 国模精品一区二区三区| 在线高清一区| 亚洲伦理在线观看| 亚洲综合第一| 久久久精品日韩| 亚洲高清视频的网址| 亚洲国产精品久久久| 日韩一级二级三级| 久久国产精品电影| 欧美成人日本| 国产精品推荐精品| 亚洲福利久久| 亚洲综合好骚| 欧美国产日本韩| 亚洲一区二区3| 欧美不卡视频一区| 国产区精品在线观看| 91久久亚洲| 久久精品免费看| 日韩性生活视频| 久久九九免费| 国产精品美腿一区在线看| 亚洲电影在线看| 久久福利资源站| 亚洲精品日韩久久| 久久性天堂网| 国产精品私房写真福利视频| 洋洋av久久久久久久一区| 久久久久久久久综合| 一区二区三区欧美| 欧美精品日韩| 91久久黄色| 久久精品一本| 亚洲影视在线| 欧美色图一区二区三区| 亚洲精品男同| 欧美国产精品人人做人人爱| 欧美一区二区三区播放老司机 | 最新中文字幕一区二区三区| 亚洲欧美日韩中文视频| 欧美日韩不卡视频| 亚洲国产精品传媒在线观看| 欧美日韩亚洲一区在线观看| 狠狠色狠狠色综合人人| 欧美一区二区三区视频在线| 99这里只有精品| 欧美激情中文不卡| 91久久精品国产91久久性色| 老司机精品视频网站| 亚洲欧美视频一区二区三区| 欧美视频精品在线观看| 一区二区三区高清在线观看| 亚洲三级电影全部在线观看高清| 久热精品视频在线免费观看| 狠狠综合久久av一区二区小说| 久久精品国产第一区二区三区最新章节 | 久久青草久久| 久久国产欧美精品| 激情成人av| 免播放器亚洲| 欧美1区免费| 亚洲三级视频在线观看| 亚洲国产va精品久久久不卡综合| 免费中文字幕日韩欧美| 亚洲毛片在线观看| 夜色激情一区二区| 国产精品网站在线| 久久久午夜视频| 猫咪成人在线观看| 一区二区三区精品在线 | 亚洲午夜免费视频| 国产精品一二三四区| 久久三级福利| 欧美精品一区二区三| 亚洲欧美精品一区| 久久九九精品99国产精品| 亚洲免费播放| 亚洲女人小视频在线观看| 很黄很黄激情成人| 亚洲激情成人| 国产三级欧美三级日产三级99| 久久偷窥视频| 欧美三级视频在线播放| 久久久国产视频91| 欧美激情视频网站| 亚洲欧美日韩综合aⅴ视频| 久久精品官网| 亚洲天堂av在线免费| 久久久久se| 亚洲综合日韩中文字幕v在线| 久久久99免费视频| 亚洲欧美在线磁力| 欧美精品久久久久a| 久久嫩草精品久久久精品| 欧美午夜在线视频| 欧美成人精品在线视频| 国产精品亚发布| 99视频精品全国免费| 亚洲尤物精选| 日韩系列欧美系列| 久久久777| 欧美亚洲在线视频| 欧美日韩国产在线一区| 免费成人av在线| 国产日韩欧美精品| 99视频日韩| 亚洲精品中文字幕有码专区| 久久高清国产| 欧美中文字幕不卡| 国产精品成人免费| 亚洲精品影视| 亚洲精品一线二线三线无人区| 久久精品毛片| 久久九九久精品国产免费直播| 国产精品久久久久毛片大屁完整版| 亚洲福利精品| 亚洲人成人一区二区三区| 久久久久www| 老司机成人网| 黄色亚洲大片免费在线观看| 午夜在线精品| 午夜视频一区在线观看| 国产精品国产馆在线真实露脸| 亚洲国产视频a| 亚洲精品乱码久久久久久久久| 久久人人爽人人爽| 欧美91大片| 亚洲级视频在线观看免费1级| 久久中文精品| 亚洲国产裸拍裸体视频在线观看乱了中文 | 午夜精品福利视频| 香蕉成人啪国产精品视频综合网| 国产精品福利在线| 亚洲一级免费视频| 久久爱www| 国内精品久久久久影院优| 久久精品国产精品亚洲| 噜噜噜噜噜久久久久久91 | 欧美一区亚洲| 久久久久久国产精品一区| 国产视频精品va久久久久久| 小黄鸭视频精品导航| 久久久久久亚洲精品杨幂换脸| 国产综合色一区二区三区| 久久精品一区二区三区中文字幕| 久久亚洲影院| 亚洲美女毛片| 国产精品毛片a∨一区二区三区| 香港成人在线视频| 欧美激情91| 亚洲免费在线视频| 黄色成人在线网站| 欧美华人在线视频| 亚洲一二三区精品| 免费成人黄色片| 一区二区欧美在线| 国产午夜一区二区三区| 美日韩丰满少妇在线观看| 亚洲精品国精品久久99热| 午夜精品久久久久久久久久久久| 久久国产天堂福利天堂| 亚洲成人在线视频播放| 亚洲一区在线免费| 韩国在线一区| 欧美日韩国产丝袜另类| 午夜视频一区二区| 亚洲人妖在线| 久久久久这里只有精品| 日韩图片一区| 精品999久久久| 国产精品成人一区二区艾草| 久久久亚洲欧洲日产国码αv| 亚洲裸体视频| 欧美freesex8一10精品| 亚洲砖区区免费| 亚洲国产日韩一区| 国产婷婷色一区二区三区在线| 欧美成人中文字幕| 欧美在线1区| 亚洲私人黄色宅男| 亚洲第一中文字幕| 久久亚洲一区二区三区四区| 亚洲免费在线精品一区| 亚洲精品一区二区三区婷婷月| 国产一区二区三区久久久久久久久| 欧美国产日韩一区二区| 欧美在线免费一级片| 亚洲午夜精品一区二区三区他趣| 亚洲国产另类久久久精品极度| 久久夜色精品国产| 欧美中文字幕久久| 亚洲免费综合| 亚洲一区尤物|