vector的模擬實現

2021-10-10 15:24:55 字數 1927 閱讀 7034

最近學習了vector的使用,下面對vctor進行了模擬實現,

如有不足請指出:

#include

#include

#include

using

namespace std;

template

<

class

t>

class

vector

//大小

size_t size()

const

//容量

size_t capacity()

const

//尾插

void

push_back

(const t& val)

//尾插元素

*_finish = val;

//更新位置

++_finish;

*/insert

(end()

, val);}

void

pop_back()

void

reserve

(size_t n)

//釋放原有空間

delete

_start;

//更新

_start = tmp;

_finish = _start + sz;

_endofstorage = _start + n;}}

t&operator

(size_t pos)

const t&

operator

(size_t pos)

const

//迭代器的實現

typedef t* iterator;

typedef

const t* const_iterator;

//非const型別

iterator begin()

iterator end()

//const 型別,只能讀,不能修改

const_iterator begin()

const

const_iterator end()

const

//resize()

void

resize

(size_t n,

const t& val=t(

))if(n >

size()

)}_finish = _start + n;

}void

insert

(iterator pos,

const t& val)

//增容會導致迭代器失效,更新pos

pos = offset + _start;

//元素移動

iterator it =

end();

while

(it != pos)

//插入資料

*pos = val;

//更新size

++_finish;

}//刪除某一位置的元素

iterator erase

(iterator pos)

--_finish;

return pos;}~

vector()

}private

: t* _start;

//vector的首元素位址

t* _finish;

//最後乙個元素的下一位置

t* _endofstorage;

//當前元素空間的尾位址};

void

print

(const vector<

int>

& vec)

cout << endl;

}int

main()

模擬實現vector

include include using namespace std template class vector 向vector中存入size個元素 vector const t array,size t size start new t size endofstorage start size ...

vector的模擬實現

上一節部落格講述了vector常見介面的使用,今天主要是對vector這些介面進行模擬實現,下面是相關 include include includeusing namespace std namespace ty iterator end citerator cbegin const citera...

STL模擬實現vector

首先給出所需要實現的函式介面和類的封裝 templateclass vector 接下來給出上面介面的具體的實現,但是其中有 型別萃取,因為需要根據不同的資料型別進行不同的賦值方式,從而提高程式的效率。下面給出所有的實現 和我自己的測試 struct truetype struct falsetyp...