// 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...