STL模擬實現vector

2021-08-10 02:16:35 字數 2375 閱讀 8185

首先給出所需要實現的函式介面和類的封裝

templateclass vector

;

接下來給出上面介面的具體的實現,但是其中有

型別萃取,因為需要根據不同的資料型別進行不同的賦值方式,從而提高程式的效率。

下面給出所有的實現**和我自己的測試**

struct truetype

};struct falsetype

};templatestruct typetraits

;template<>

struct typetraits;

template<>

struct typetraits;

template<>

struct typetraits;

//上面是型別萃取部分的**

templateclass vector

;templatevector::vector()

:_start(0)

, _finish(0)

, _endostorage(0){}

templatevector::~vector()

}templatevector::vector(const t* array, size_t size)

:_start(new t[size])

, _finish(_start+size)

, _endostorage(_finish)

else }

templatevector& vector::operator=(const vector& s)

else

delete s._start;

} return;

}templatevoid vector::_checkcapacity()

else

_finish = start + size();

_endostorage = start+capacity()+5;

delete _start;

_start = start;

} return;

}templatevoid vector::insert(size_t pos, const t& data)//指定位置插入元素

_start[pos-1] = data;

_finish++;

}templatevoid vector::erase(size_t pos)//指定位置的刪除

templatevoid vector::popback()

return;

}templatevoid vector::resize(size_t newsize, const t& data = t())//改變元素個數,新增加的空間所賦值的元素

else if (newsize > size() && newsize < capacity()) }

else

for (size_t j = size(); j < newsize; j++)

delete _start;

_start = start;

_finish = _start + newsize;

_endostorage = _start + newsize; }}

templatebool vector::empty()const

templatesize_t vector::size() const//元素個數

templatesize_t vector::capacity()const

templatet& vector::operator(size_t index)

templateostream& operator<

templatet& vector::front()

templateconst t& vector::front()const

templatet& vector::back()

templateconst t& vector::back()const

templatevoid vector::clear()//清空元素

void testvector()

; vectors(arr, sizeof(arr) / sizeof(*arr));

cout <

cout << "front()="

size_t n5 = s2.size();

for (size_t i = 0; i < n5; i++)

cout << endl;

}

測試結果如下,自己可以根據自己的想法去測試上面的功能

stl 模擬實現vector

對於vector相信大家並不陌生,這裡介紹一些重要的vector的介面和用法。1.建構函式 vector 無參構造 vector size type n,const value type val value type 構造並初始化n個val vector inputiterator first,in...

類模板模擬實現STL中Vector

vector 向量 c 中的一種資料結構,確切的說是乙個類.它相當於乙個動態的陣列,當程式設計師無法知道自己需要的陣列的規模多大時,用其來解決問題可以達到最大節約空間的目的.用法 1.變數宣告 例 宣告乙個int向量以替代一維的陣列 vector a 等於宣告了乙個int陣列a,大小沒有指定,可以動...

模擬實現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 ...