STL-序列式容器-vector详解

来源:互联网 发布:mac plsql developer 编辑:程序博客网 时间:2024/06/06 00:22

前言

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(); }}
原创粉丝点击