STL 鍊錶和迭代器

2021-10-07 06:55:33 字數 2467 閱讀 4642

#include

#include

#include

#include

#include

//#include

//#include

#include

//迭代器

//空間配置器

using

namespace std;

//鍊錶實現

namespace my

//構造

template

<

class

_t1,

class

_t2>

void

_construct

(_t1* _p,

const _t2& _v)

//析構

template

<

class

_ty>

void

_destroy

(_ty* _p)

//空間配置器

template

<

class

_ty>

class

myallocator

//以字元大小申請空間

char

*_charalloc

(size_type _n)

//釋放空間

void

deallocate

(void

* _p, size_type)

//構造物件

void

construct

(pointer _p,

const _ty& _v)

//析構物件

void

destroy

(pointer _p)};

//********************==鍊錶和迭代器的實現********************==//

template

<

class

_ty,

class

_a=myallocator<_ty>>

//stl中是帶頭雙向迴圈鍊錶

class

list

;public

://迭代器類 內部類

class

iterator

bool

operator!=(

const iterator &it)

bool

operator==(

const iterator &it)

_ty&

operator*(

)/*_nodeptr operator++()

*/iterator&

operator++(

) iterator operator++(

int)

_nodeptr _mynode()

private

: _nodeptr _ptr;};

public

://構造物件

//list():_head(nullptr),_size(0){}//_head為空,但實際要求頭指標不為空,所以要呼叫bynode申請乙個節點

list()

:_head

(_buynode()

),_size(0

)public

: iterator begin()

iterator end()

public

:void

push_back

(const _ty &x)

void

push_front

(const _ty &x)

void

push_front_0

(const _ty &x)

void

printlist()

cout<<

"over"

<} iterator insert

(iterator _p,

const _ty& _x=

_ty())

protected

://_next arg _prev arg(前乙個,下乙個引數)

_nodeptr _buynode

(_nodeptr _narg=

0,_nodeptr _parg=0)

private

://_內部型別或函式

_nodeptr _head;

size_type _size;

//記錄真實節點個數

_a allocator;

//空間配置物件 空間配置器};

};intmain()

cout<<

"over."

}/*int main()

cout<<"over."<

鍊錶總結之STL中迭代器失效問題

這裡主要介紹鍊錶的基本知識,加深對鍊錶的了解,以及關於鍊錶的常見的面試題。最後介紹stl中的迭代器失效的問題 1.概念 鍊錶是一種物理儲存結構上非連續 非順序的儲存結構。鍊錶的每個結點裡面儲存著下乙個結點的指標,把儲存資料元素的資料串鏈起來。2.結點組成 資料域 儲存資料元素 3.分類 單鏈表 是一...

python 鍊錶 迭代器

class mylinkedlist 雙向鍊錶 class node def init self,data,prev none next none self.data data self.prev prev self.next next def init self 有頭的雙向鍊錶 self.size...

鍊錶以及鍊錶的迭代器

list.h pragma once template class list template class listiterator 鍊錶節點 template class listnode template class list template class listiterator 用來判斷鍊錶...