VS 2010 STL list原始碼分析

2021-09-26 02:29:40 字數 2623 閱讀 7604

// template class _list_nod

templateclass _list_nod

: public _container_base//即為_container_base12

; _list_nod(_alloc _al)

: _alnod(_al), _alval(_al)

~_list_nod()

//list的實現包括頭指標

_nodeptr _myhead; // pointer to head node

//因為不像vector可以last-first就可以算size,list裡必須有乙個儲存元素數量的成員變數

size_type _mysize; // number of elements

//若是list那麼記憶體分配器_alloc是用來分配int的,而_alnod是用來分配_node的

typename _alloc::template rebind<_node>::other

_alnod; // allocator object for nodes

_alty _alval; // allocator object for element values

};

// template class _list_val

templateclass _list_val

: public _list_nod<_ty, _alloc>

;

// template class list

template>

class list

: public _list_val<_ty, _ax>

;

// template class _list_unchecked_const_iterator

templateclass _list_unchecked_const_iterator

: public _iterator012

_list_unchecked_const_iterator(_nodeptr _pnode, const _mylist *_plist)

: _ptr(_pnode)

reference operator*() const

pointer operator->() const

_myiter& operator++()

bool operator==(const _myiter& _right) const

_nodeptr _mynode() const

_nodeptr _ptr; // pointer to node

};

// template class _list_unchecked_iterator

templateclass _list_unchecked_iterator

: public _list_unchecked_const_iterator<_mylist>

// template class _list_const_iterator

templateclass _list_const_iterator

: public _list_unchecked_const_iterator<_mylist, _iterator_base>

// template class _list_iterator

templateclass _list_iterator

: public _list_const_iterator<_mylist>

std::listintlist;
list()

: _mybase()

_list_val(_alloc _al = _alloc())

: _mybase(_al)

intlist.push_back(11);
//引數為右值引用版本

void push_back(_ty&& _val)

//前插法,把新結點插在_where的前面。	

templatevoid _insert_rv(const_iterator _where,

_valty&& _val)

擴充套件1 

template_nodeptr _buynode(_nodeptr _next,

_nodeptr _prev, _valty&& _val)

擴充套件2

void _incsize(size_type _count)

iterator erase(const_iterator _where)

return (_make_iter(_where));

}

STL list原始碼解析

templatestruct list node 底層是雙向鍊錶 template class list iterator t operator t operator self operator self operator int self operator self operator int bo...

VS 2010 STL deque原始碼分析

deque 即雙端佇列,與vector相比,此容器多出了pop front 和push front 這兩個操作,即在首部的增刪操作 而與list相比,deque多出了對容器元素的隨機訪問功能。網上也有很多關於deque原始碼分析的文章,不過大部分都是繼承自侯捷 stl原始碼分析 中關於deque原始...

串列埠學習筆記原始碼 VS2010

serialdlg.cpp 實現檔案 include stdafx.h include serial.h include serialdlg.h include afxdialogex.h include io.h include windows.h ifdef debug define new d...