類模板模擬實現STL中Vector

2021-07-29 05:14:10 字數 2151 閱讀 3418

vector(向量): c++中的一種資料結構,確切的說是乙個類.它相當於乙個動態的陣列,當程式設計師無法知道自己需要的陣列的規模多大時,用其來解決問題可以達到最大節約空間的目的.

用法:

1.變數宣告:

例:宣告乙個int向量以替代一維的陣列:vector a;(等於宣告了乙個int陣列a,大小沒有指定,可以動態的向裡面新增刪除)。

例:用vector代替二維陣列.其實只要宣告乙個一維陣列向量即可,而乙個陣列的名字其實代表的是它的首位址,所以只要宣告乙個位址的向量即可,即:vector

#include 

using

namespace

std;

#include

template

class vector

vector(size_type n, const t& value = t()) //建構函式,構造乙個裡面有n個相同值的順序表

:_start(new t[n])

vector& operator = (const vector& v) //賦值運算子過載

}return *this;

}~vector() //析構函式

}iteator begin() //得到陣列頭的指標

const_iterator begin()const

iteator end() //得到陣列的最後乙個單元+1的指標

const_iterator end()const

size_type size()const

//當前使用資料的大小

size_type capacity()const

//當前vector分配的大小

bool empty()const

//判斷vector是否為空

reference operator(size_type index) //得到編號位置的資料

const_reference operator(size_type index)const

reference front() //得到陣列頭的引用

reference back() //得到陣列的最後乙個單元的引用

void pushback(const t& value) //在陣列的最後新增乙個資料

void popback() //去掉陣列的最後乙個資料

iteator insert(iteator pos, const t& value) // 在指標指向元素的前面插入乙個元素

*pos = value;

_finish++;

return &(*pos);

}iteator erase(iteator pos) //刪除指標指向的資料項

_finish--;

return pos;

}void resize(size_type newsize, const t& value = t()) //重新設定該容器的大小

else

}

}void assign(size_t n, const t& data) //構造乙個裡面有n個相同值的順序表

private:

void checkcapacity()

_start = ptemp;

_finish = _start + size;

_end_of_storage = _start + capacity;}}

protected:

iteator _start;

iteator _finish;

iteator _end_of_storage;

};void funtest1()

cout

cout

cout

cout

<6);

v1.insert(v1.begin(), 10);

cout

cout

<2);

v1.insert(v1.begin(), 10);

cout

cout

<10);

v1.erase(v1.begin());

cout

cout

STL 模擬實現list

list是標準模板庫中的乙個容器,實際上是一條帶頭節點的雙向鍊錶。通過與迭代器的組合使用,使得工作效率大大提高。要注意 迭代器只是為了訪問 修改和遍歷物件,不對空間進行管理。pragma once include using namespace std 定義鍊錶結點結構體 templatestruc...

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...