STL-序列式容器-vector详解

前言

STL容器在项目中被广泛的应用,现做一个简单的整理,便于后期查阅、参考。本博客关于STL相关博文均指SGI版本的STL。由于本人能力有限,博文中有不正确的地方,欢迎各位读友批评、指正。

vecotr 概述

vector 的数据安排以及操作方式,与 array 非常相似。两者唯一的差别在于对空间运用的灵活性。array 是静态空间,一旦配置了就不能改变。vector 是动态空间, 随着元素的加入, 它的内部机制会自行扩充空间以容纳新元素。一下内容主要针对 vector 基本的数据结构以及常用的方法进行介绍。

vector 的数据结构

template <class T, class Alloc = alloc>
class vector {
    public:
        typedef T           value_type;
        typedef value_type* pointer; 
        typedef value_type* iterator;
        typedef value_type& reference;
        typedef size_t      size_type;
        typedef ptrdiff_t   difference_type;

    protected:
        iterator start;          // 表示目前使用的空间头
        iterator finish;         // 表示目前使用的空间尾
        iterator end_of_storage; // 表示目前可用的空间尾
        // 略
    public:
        iterator begin() { reutrn start; } // 目前以使用空间头部
        iterator end() { return finish; }  //目前以使用空间尾部
        size_type size() const { return size_type(end() - begin()); } // 目前已使用空间大小
        size_type capacity() const { return size_type(end_of_storage - begin()); } // 目前全部可使用空间大小
        bool empty() const { return begin() == end(); }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值