vector為我們提供了可伸縮的順序存儲(chǔ)容器,在順序和隨機(jī)存儲(chǔ)方面效率很高實(shí)現(xiàn)vector的關(guān)鍵在于實(shí)現(xiàn)內(nèi)存分配和對象構(gòu)造的分離,一般來講我們直接用new來構(gòu)造對象就經(jīng)歷了這兩個(gè)過程,而實(shí)現(xiàn)vector就需要我們先申請請到一片連續(xù)的內(nèi)存區(qū)域,然后在需要時(shí)在改內(nèi)存上構(gòu)造對象。這里用到allocator模板類該類內(nèi)部封裝了如下方法:template<typename elm>class allocator{elm *allocate(size_t n) //分配n個(gè)對象存儲(chǔ)空間void construct(elm* p,size_t n) //在以p為開始的內(nèi)存上構(gòu)造n個(gè)對象void destroy(elm* p) //銷毀對象void deallocate(elm*p,size_t n) //釋放從p開始的n個(gè)對象內(nèi)存
posted on 2009-08-12 15:46 pear_li 閱讀(2486) 評論(0) 編輯 收藏 引用 所屬分類: C++