STL庫中vector的模擬

2021-06-19 20:31:50 字數 2125 閱讀 4064

資料結構和演算法分析c++描述中作者對stl中vector進行了模擬,實現了vector的簡單功能,好東西不能獨享,**奉上

#ifndef vector_h

#define vector_h

#include "d***ceptions.h"

template class vector

vector(const vector&rhs) : objects(nullptr)

~vector()

int size() const

int capacity() const

bool empty() const

t & operator(int index)

return objects[index];

} const t & operator(int index) const

return objects[index];

} const vector& operator= (const vector&rhs)

}return *this;

} void reserve(int newcapacity) //實現陣列容量的調整

else

newcapacity += spare_capacity;

t * newobjects = new t [newcapacity];

for(int i = 0; i < numcopy; i++) //拷貝原來的資料

delete oldobjects;

objects = newobjects;

this->thesize = numcopy;

this->thecapacity = newcapacity;

} void resize( int newsize )

void push_back(t &value)//vector尾部加入1個元素

objects[thesize++] = value;

} void pop_back() //刪除vector尾部元素

thesize--;//thssize減下去,剛才的元素在無法被引用了,成為了孤兒,這片記憶體洩露了嗎?

} const t & back() //取出尾部元素,vector不變化

return objects[thesize-1];

} //模擬stl中的iterator

typedef t * iterator;

typedef const t * const_iterator;

iterator begin()

const_iterator cbegin()

iterator end()

const_iterator cend()

enum ;

private:

int thesize;

int thecapacity;

t *objects;

};#endif

測試方法:

STL模擬實現vector

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

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,大小沒有指定,可以動...