首先給出所需要實現的函式介面和類的封裝
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 ...