實現乙個STL的vector容器

2021-10-07 08:23:12 字數 2138 閱讀 2970

封裝了vector的資料結構,和push_back(),capacity(),size()方法,內嵌了iterator迭代器類

#include

// #include

using

namespace std;

namespace ministl

~vector()

// 拷貝建構函式

// 賦值運算子過載函式

void

push_back

(const t& val)

else

delete

_data;

_data = temp;}}

_data[_size-1]

= val;

}int

size()

const

intcapacity()

const

t&operator

(int index)

const t&

operator

(int index)

const

// 巢狀類:類中定義的類

class

iterator

t&operator*(

) t*

operator

->()

//iterator operator++()

bool

operator==(

const iterator& it)

const

bool

operator!=(

const iterator& it)

const

// 所有操作符除了字首字尾還有復合賦值+= -= *=之外,不會改變原來下變數值

iterator operator+(

int n)

const

iterator operator-(

int n)

const

iterator operator++(

) iterator operator++(

int)

iterator operator--(

) iterator operator--(

int)};

iterator begin()

iterator end()

};}using

namespace ministl;

class

student

;ostream&

operator

<<

(ostream& os,

const student& s)

intmain()

cout <<

sizeof

(vec)

<< endl;

/* for(int i=0;ivector<

int>

::iterator it = vec.

begin()

;while

(it != vec.

end())

cout << endl;

for(

auto n:vec)

cout << endl;

vector vec1;

vec1.

push_back()

; vec1.

push_back()

; vec1.

push_back()

;

vector

::iterator it1 = vec1.

begin()

; cout <<(*

(it1+2)

).name << endl;

while

(it1 != vec1.

end())

cout << endl;

// int n = 10;

// n+1

// ++n //

// n++ //

}

STL原始碼之實現乙個簡易的Vector容器

這裡需要的基礎知識主要是類模板和函式模板,以及乙個c 記憶體分配的技術allocator類,它提供可感知型別的記憶體分配,這個類支援乙個抽象介面,以分配記憶體並隨後使用該記憶體儲存物件。使用allocator類,首先應用allocator類建立乙個allocator物件,然後使用該物件你可以分配記憶...

STL 簡單 vector 的實現

stl 簡單 vector 的實現 我用vs2013寫的程式 github vector版本的 位於 我是照著侯捷老師的 stl原始碼剖析 做的cghstl,現在才看到第三章,覺得這本書的編排非常適合自學。第一章講解空間配置器,這是stl最基礎的部件,沒什麼好說的。第二章講解迭代器,老師舉了單向鍊錶...

實現乙個STL的list容器

封裝了list的資料結構,和push back push front pop back pop front size 方法,內嵌了iterator迭代器類,還寫了for each 和accumulate 模板演算法 include include include include using name...