• C++ vector(STL vector)底层实现机制(通俗易懂)

    STL 众多容器中,vector 是最常用的容器之一,其底层所采用的数据结构非常简单,就只是一段连续的线性内存空间。

    通过分析 vector 容器的源代码不难发现,它就是使用 3 个迭代器(可以理解成指针)来表示的:

    //_Alloc 表示内存分配器,此参数几乎不需要我们关心
    template <class _Ty, class _Alloc = allocator<_Ty>>
    class vector{
        ...
    protected:
        pointer _Myfirst;
        pointer _Mylast;
        pointer _Myend;
    };

    其中,_Myfirst 指向的是 vector 容器对象的起始字节位置;_Mylast 指向当前最后一个元素的末尾字节;_myend 指向整个 vector 容器所占用内存空间的末尾字节。

    图 1 演示了以上这 3 个迭代器分别指向的位置。



    图 1 vector实现原理示意图

更多...

加载中...