标签:style blog color 数据 art div
STL源码之vector
1. SGI的vector
SGI stl vector继承子一个基类:
template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
class vector : protected _Vector_base<_Tp, _Alloc>
在基类中定义了基本的一些操作,并且封装了了vector所需要的基本的三个指针:
struct _Vector_impl
: public _Tp_alloc_type
{
pointer _M_start;
pointer _M_finish;
pointer _M_end_of_storage;
…
}
public:
_Vector_impl _M_impl;
以_M_impl作为数据成员。
现在我们只在一个类中表达出相同含义。
2. vector基本含义
template<typename _Tp, typename _Alloc = std::allocator<_Tp> > class vector : protected _Vector_base<_Tp, _Alloc> { //必须的嵌套类型,必须包含iterator_traits中五个类型
public: typedef _Tp value_type; typedef typename _Base::pointer pointer; typedef typename _Alloc_traits::const_pointer const_pointer; typedef typename _Alloc_traits::reference reference; typedef typename _Alloc_traits::const_reference const_reference; typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator; typedef __gnu_cxx::__normal_iterator<const_pointer, vector> const_iterator; typedef std::reverse_iterator<const_iterator> const_reverse_iterator; typedef std::reverse_iterator<iterator> reverse_iterator; typedef size_t size_type; typedef ptrdiff_t difference_type; typedef _Alloc allocator_type;
protect:
标签:style blog color 数据 art div
原文地址:http://www.cnblogs.com/hancm/p/3840425.html