当前位置:   article > 正文

获取vector元素个数_探索STL容器:vector

查询vector内元素个数

用了这么久的 vector ,今天终于有时间来看下STL的实现源码了,开心?~


最近几个月在刷 leetcode ,用的较多的数据结构就是STL里面的 vector 了,相比较于直接的 array 数组,它具备了灵活地根据需求去分配管理内存,用户只管往里面扔东西,拿东西,而不用费心费力去解决C++里面的动态内存问题。

那么大致猜想一下,要实现一个这样的容器,不难想出在 vector 中至少存在这样三个私有成员:head(指向列表第一个元素位置), tail(指向列表最后一个元素位置), size(容器大小)

打开源码看看,得到验证:

  1. template<typename _Tp, typename _Alloc>struct _Vector_base {
  2.     ......    struct _Vector_impl_data {
  3.         pointer _M_start;  // 指向容器中的第一个元素,是一个指针,指针类型为 Tp 所示类型        pointer _M_finish; // 指向容器最后一个元素,也是一个指针        pointer _M_end_of_storage; // 指向容器最后的位置        ......    }}template<typename _Tp, typename _Alloc = std::allocator<_tp> >class vector : protected _Vector_base<_tp> {
  4. typedef _Vector_base<_tp> _Base; // 如上 _Vector_base 所示,是一个基础实现    ......public:typedef _Tp value_type;  // 数据类型typedef typename _Base::pointer pointer// 全局数据指针    ......}

总之就是一层套一层,封装了一个又一个,来完成对数据的抽象。但是最后的接口是放在 vector 上放开的。

vector 支持动态内存分配&#x

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号