C 模式實現vector

2021-10-07 09:50:59 字數 2619 閱讀 1213

#include

#include

#include

using

namespace std;

namespace my_vector

//2. c++11構造 以列表初始化 比如乙個array, 乙個list

vector

(initializer_list il)

:_start

(nullptr),

_finish

(nullptr),

_endofstorage

(nullptr)}

//3. 拷貝構造

vector

(vector

&v):

_start

(nullptr),

_finish

(nullptr),

_endofstorage

(nullptr

)//4

vector

(int n,

const t &value =t(

))}//5

vector&

operator=(

const t &v)

return

*this;}

//6template

<

class

inputiterator

>

vector

(inputiterator first, inputiterator last)

}//析構函式

~vector()

}public

:void

reserve

(size_t n)

}delete

_start;

_start = new_start;

_finish = new_start + old_sz;

_endofstorage = _start + n;}}

//const t &x = t()預設構造

void

resize

(size_t n,

const t &x =t(

))if(n>

capacity()

)reserve

(n);

iterator it = _finish;

_finish = _start + n;

while

(it != _finish)

}public

: iterator insert

(iterator pos,

const t& x)

iterator end = _finish;

while

(end > pos)

//給pos位置插入x

*pos = x;

_finish++

;return pos;

} iterator erase

(iterator pos)

_finish--

;return pos;

}void

pop_back()

void

push_back

(const t &x)

public

:void

swap

(vector

&v) iterator begin()

iterator end()

public

: size_t capacity()

size_t size()

bool

empty()

const

t&operator

(size_t pos)

private

: iterator _start;

// 指向資料塊的開始

iterator _finish;

// 指向有效資料的尾

iterator _endofstorage;

// 指向儲存容量的尾};

}

void

main()

;//my_vector::vectorv2 = v1;

/*v1.reserve(200);

v1.reserve(100);

v1.resize(20, 1);*/

cout <<

"capacity = "

<< v1.

capacity()

<< endl;

cout <<

"size = "

<< v1.

size()

<< endl;

for(

const

auto

&e : v1)

cout << endl;

//auto it = v1.end();

//it++;

3);

/*v1.push_back(7);

for (auto &e : v1)

*///my_vector

/* for (auto &e : v1)

*/}

使用C 實現Vector

最近開始學習資料結構與演算法了,使用的是weiss的資料結構與演算法c 描述,第三版和第四版。其中第四版已經全部用c 11的標準重寫了。感覺我自己寫的時候有點糾結到底用c 老的標準還是c 11的標準,哈哈,選擇困難!今天我主要用c 老的標準寫了vector類,因此沒有實現移動建構函式和移動拷貝函式。...

C 簡單實現vector

向量是序列容器,表示可以更改大小的陣列。就像陣列一樣,向量對其元素使用連續的儲存位置,這意味著也可以使用指向其元素的常規指標上的偏移量來訪問其元素,並且與陣列一樣高效。但與陣列不同的是,它們的大小可以動態變化,它們的儲存由容器自動處理。在內部,向量使用動態分配的陣列來儲存其元素。可能需要重新分配此陣...

C 動態陣列vector實現

最近在做將matlab 轉化為c c 的工作,在實際應用時,發現動態陣列非常重要,我在學習的時候也踩了許多坑,這篇就當做一篇踩坑筆記,希望讀者能夠繞開我踩過的坑,順利應用動態陣列。其實在c語言中,都是靜態陣列,即需要在定義的時候就定下該陣列的長度,然而這在實際的應用中,很大的一部分情況是我們並不知道...