C vector類的模擬實現

2021-10-05 18:43:38 字數 1640 閱讀 4426

vector的認識:

vector是乙個大小可以改變的序列式容器,也稱為陣列。也就是說vector是一段連續的空間來儲存資料。

同樣vector也有一系列的介面,我們要熟練使用vector的介面,首先要理解vector介面的底層實現,才能靈活運用。

vector主要也就是實現儲存型別t的增刪改查,同樣,為了方便實現這些操作,vector底層運用了三個迭代器:_start指向陣列的首部,_end指向陣列中資料的下乙個位置,_end_of_storage指向陣列中最大容量的位置。

下面是其實現:

模擬實現

#include

#include

using

namespace std;

template

<

class

t>

class

vector

~vector()

}vector

(const vector

& v)

void

swap

(vector

& v)

vector

&operator

=(vector v)

void

resize

(size_t n,

const t& val =t(

))if(n >

capacity()

)while

(_finish != _start + n)

}void

reverse

(size_t n)

}void

push_back

(const t& val)

*_finish = val;

++_finish;

}void

pop_back()

void

insert

(iterator pos,

const t& x)

iterator end = _finish -1;

while

(end >= pos)

*pos = x;

++_finish;

}void

erase

(iterator pos)

--_finish;

} size_t size()

const

size_t capacity()

const

t&operator

(size_t pos)

const

const t&

operator

(size_t pos)

const

iterator begin()

iterator end()

private

: iterator _start;

iterator _finish;

iterator _end_of_storage;};

void

test1()

cout << endl;

}int

main()

system

("pause");

}

c vector(模擬實現)

include using namespace std namespace bit public vector start nullptr finish nullptr end of sorage nullptr vector size t n,const t value t start nullp...

模擬實現string類

include using namespace std include class string string string a 2 為什麼要用 優點在哪 string void print string operator const string a string operator const s...

模擬實現日期類

日期類好久沒寫了,重溫一下以前的知識。寫日期類需要注意的有 1 日期減日期的計算 2 關於輸出輸入過載的友元函式宣告 3 建構函式的條件判斷 4 拷貝建構函式的自我賦值判斷 實現 如下 include using namespace std class date else 拷貝建構函式 date c...