STL container 之 vector的實現

2021-08-02 02:52:10 字數 2754 閱讀 3186

辛辛苦苦寫了乙個上午的資料結構,**基本能將vector的功能實現,其中vector用vectors代替,iterator用iterators代替,支援隨機訪問

**寫的比較粗糙,為了節省時間,對於越界問題沒有做特殊處理,**風格不是特別好。功能經過了自己的檢驗,如果有寫錯的地方,希望大家能指出來,我會及時改正~~~

//stl 全部 左開右閉

//為了節省時間 嗯 時間就是生命 tle go died !!! 所以插入移除的位置沒做特別判斷 只要合理利用 就沒問題

#include #include using namespace std;

template class vectors

iterators(const iterators& it)

iterators(_tp* it)

iterators& operator =  (iterators& it)

iterators& operator +  (int len)

iterators& operator -  (int len)

iterators& operator ++ ()

iterators& operator -- ()

iterators  operator ++ (int)

iterators  operator -- (int)

bool operator != (iterators it)

_tp& operator *  ()

private:

_tp* pointer;

};vectors(int len=0)

vectors(const vectors<_tp,n>&);

~vectors()

iterators begin()

iterators end()

iterators rbegin()

iterators rend()

_tp  front()

_tp  back()

iterators insert(iterators,_tp);

void insert(iterators,iterators,iterators);

void insert(iterators,int,_tp);

iterators erase(iterators);

iterators erase(iterators,iterators);

_tp& operator (int pos)

vectors<_tp,n>& operator = (const vectors<_tp,n>&);

void pop_back()

void push_back(_tp);

void assign(int len,_tp elem)

void assign(_tp* s,_tp* e)

void clear()

void resize(size_t len)

void reserve(size_t len)

int size()

size_t capacity()

bool empty()

private:

_tp* p;

int length;

int sizes;

};template vectors<_tp,n>::vectors(const vectors<_tp,n>& tmp)

template void vectors<_tp,n>::push_back(_tp val)

template vectors<_tp,n>& vectors<_tp,n>::operator = (const vectors<_tp,n>& tmp)

template typename vectors<_tp,n>::iterators vectors<_tp,n>::insert(iterators s,_tp elem)

*pos=elem;

return iterators(pos);

}template void vectors<_tp,n>::insert(iterators s,int len,_tp elem)

for(_tp* ps=pos;ps!=pos+len;ps++)

*ps=elem;

}template void vectors<_tp,n>::insert(iterators cur,iterators st,iterators ed)

while(stypename vectors<_tp,n>::iterators vectors<_tp,n>::erase(iterators s)

{    _tp* pos=s.pointer;

_tp* po=pos+1;

while(potypename vectors<_tp,n>::iterators vectors<_tp,n>::erase(iterators st,iterators ed)

{    _tp* s=st.pointer;

_tp* e=ed.pointer;

int len=e-s;

_tp* po=s+len;

while(poa(8);

a.assign(x,x+5);

a[5]=7;

a[6]=42;

a[7]=9999;

cout<::iterators it=a.begin();it!=a.end();it++)

cout<<*it<<" ";

cout<

STM32f103VE學習之預備知識

通訊方式 波特率 bd 可以通俗的理解為乙個裝置在一秒鐘內傳送 或接收 了多少碼元的資料。如每秒鐘傳送240個字元,而每個字元格式包含10位 1個起始位,1個停止位,8個資料位 這時的波特率為240bd,位元率為10位 240個 秒 2400bps。又比如每秒鐘傳送240個二進位制位,這時的波特率為...

eclipse3 1中ve外掛程式的安裝

最近準備自己來做乙個eclipse的外掛程式,昨天按上面的介紹做了一遍,算是基本入門了。不過在我安裝好以後啟動eclipse後卻始終沒有 visual class 此專案,在網上搜了一下,終於找到解決辦法。就是 關閉eclipse.把eclipse安裝目錄configuration裡除了config...

Yahoo開源實時大資料處理服務系統Vespa

編譯 薛命燈 編輯 natalie 從 2006 年開源 hadoop 開始,yahoo 也就是現在的 oath 為廣大開發者社群的大資料基礎設施做出了不可磨滅的貢獻。現在,我們又邁出了堅實的一步,yahoo 的大資料處理和服務引擎 vespa 正式在 github 上開源了 有了 vespa,開發...