list迭代器的模擬實現

2021-10-03 18:53:24 字數 2382 閱讀 3676

namespace bite

listnode

* _ppre;

listnode

* _pnext;

t _val;};

/*list 的迭代器

迭代器有兩種實現方式,具體應根據容器底層資料結構實現:

1. 原生態指標,比如:vector

2. 將原生態指標進行封裝,因迭代器使用形式與指標完全相同,因此在自定義的類中必須實現以下方法:

1. 指標可以解引用,迭代器的類中必須過載operator*()

2. 指標可以通過->訪問其所指空間成員,迭代器類中必須過載oprator->()

3. 指標可以++向後移動,迭代器類中必須過載operator++()與operator++(int)

至於operator--()/operator--(int)釋放需要過載,根據具體的結構來抉擇,雙向鍊錶可以向前

移動,所以需要過載,如果是forward_list就不需要過載--

4. 迭代器需要進行是否相等的比較,因此還需要過載operator==()與operator!=()

*/template

<

classt,

class

ref,

class

ptr>

class

listiterator

listiterator

(const self& l)

:_pnode

(l._pnode)

t&operator*(

) t*

operator

->()

self&

operator++(

) self operator++(

int)

self&

operator--(

);self&

operator--(

int)

;bool

operator!=(

const self& l)

bool

operator==(

const self& l)

pnode _pnode;};

template

<

class

t>

class

list

list

(int n,

const t& value =t(

))template

<

class

iterator

>

list

(iterator first, iterator last)

}list

(const list

& l)

list

&operator=(

const list l)

~list()

///// list iterator

iterator begin()

iterator end()

const_iterator begin()

const_iterator end()

///// list capacity

size_t size()

const

;bool

empty()

const

;// list access

t&front()

;const t&

front()

const;t&

back()

;const t&

back()

const

;// list modify

void

push_back

(const t& val)

void

pop_back()

void

push_front

(const t& val)

void

pop_front()

// 在pos位置前插入值為val的節點

iterator insert

(iterator pos,

const t& val)

// 刪除pos位置的節點,返回該節點的下乙個位置

iterator erase

(iterator pos)

void

clear()

;void

swap

(list

& l)

;private

:void

createhead()

private

: pnode _phead;};

}

迭代器模擬實現STL中的list

list中的迭代器類似與智慧型指標的作用,它是將指向鍊錶指向結點的指標管理起來。在stl中的list是帶頭結點的雙向迴圈鍊錶,這樣的設計很巧妙,可以讓我們的插入和刪除元素的時候減少一些需要考慮的邊界問題。要模擬實現stl中的list我們首先得模擬實現迭代器,設計成用來管理指向list中結點的指標。因...

C 模擬實現list容器(支援迭代器)

要模擬實現乙個list容器,主要就是相關頭插頭刪尾插尾刪的介面,這些非常常用。另外有乙個點灰常重要!那就是list的迭代器,list的迭代器不能用原生指標去模擬實現,因為鍊錶的迭代器加一是下乙個節點的指標,在記憶體中兩個節點存放的位置並不連續。因為list的迭代器會指向下乙個節點,所以我們建立乙個迭...

模擬實現簡化版List迭代器 嵌入List

1 迭代器 iterators 概念 1 迭代器是一種抽象的設計概念,其定義為 提供一種方法,使他能夠按順序遍歷某個聚合體 容器 所包含的所有元素,但又不需要暴露該容器的內部表現方式。2 迭代器是一種行為類似智慧型指標的物件,而指標最常見的行為就是內 容提領和成員 訪問。因此迭代器最重要的行為就是對...