資料結構 模擬STL實現list

2021-07-25 06:45:59 字數 1971 閱讀 6774

注意:

在stl裡面運用的是空間配置器,但是這次我暫時沒有用空間配置器,後面我會帶上空間配置器再實現一遍。

#include#includeusing namespace std;

templatestruct _listnode

};templatestruct _listiterator

_listiterator(node* node)

:_node(node)

{} bool operator != (const self& s)

bool operator == (const self& s)

//前置加加

self& operator++()

//後置加加

self operator++(int)

ref operator*()

ptr operator->()

//前置減減

self& operator--()

self operator--(int)

};templateclass _list

_list()

:_phead(buynode(t())) //引數可以傳乙個臨時物件

//插入資料

void push(const t&x)

//刪除資料

void pop()

//頭插

void pushfront(const t& x)

//頭刪

void popfront()

//在特定位置插入一段區間

template void insert(iterator pos,inputiterator first, inputiterator last) }

//在特定的位置插入資料

iterator insert(iterator pos, const t& x)

//刪除特定位置的資料

iterator erase(iterator pos)

//const iterator begin()const

const iterator end()const

iterator begin()

iterator end()

protected:

node* _phead;

};

/***********************測試函式************************/

//測試插入資料和刪除資料

void test1()

coutl1.push(1);

l1.push(2);

l1.push(3);

l1.push(4);

l1.pushfront(5);

_list::iterator it1 = l1.begin();

while(it1 != l1.end())

coutl1.push(1);

l1.push(2);

l1.push(3);

l1.push(4);

_list::iterator it1 = l1.begin();

it1 = l1.insert(it1,6); //insert函式有返回值,所以用迭代器返回

while(it1 != l1.end())

coutl1.push(1);

l1.push(2);

l1.push(3);

l1.push(4);

_listl2;

l2.push(12);

l2.push(22);

l2.push(32);

l2.push(42);

_list::iterator it1 = l1.begin();

l1.insert(it1,l2.begin(),l2.end());

it1 = l1.begin();

while(it1!= l1.end())

cout<

STL 模擬實現list

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

stl 模擬實現list

list 是最常用的 stl 庫之一,它的底層就是乙個帶頭的雙向迴圈鍊錶,所以我們在使用時也可以把它想象成這種鍊錶。下面我們模擬實現list。在模擬實現 list 之前,我們首先要明確 list 的迭代器。迭代器的型別有兩種,第一種就是原生態的指標,例如vector的迭代器。第二種就需要我們自己來封...

STL 模擬實現List

list是可以在常數範圍內在任意位置進行插入和刪除的序列式容器,並且該容器可以前後雙向迭代,list的底層是雙向鍊錶結構。如下demo,我們分別用正向迭代器和反向迭代器訪問list元素 int main list int l1 array,array sizeof array sizeof arra...