Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95264
  • 博文数量: 46
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 505
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-22 19:56
文章分类
文章存档

2008年(46)

我的朋友

分类: C/C++

2008-09-29 23:03:52

vector是一种顺序容器,占用一段连续的内存空间,sizeof(vector)为16,因为vector类里面定义了4更指针,分别是指向向量头(start),向量尾(finish),空间(end of storage)和用于构造函数需要的一根指针。
里面含有的主要函数是
vector::vector(int size)---分配size个type类型的空间。
vector::vector(int size, type tp)____ 分配size个type类型的空间,每个空间用tp进行初始化。
vector::vector()------定义一个空的vector。
vector::push_back----向vector的尾部放一个type,end向前走一格。若空间不够(end==end of store),则系统会分配一个大小是目前vector大小2倍的空间,将目前vector的元素copy进新定义的空间里,再销毁源
空间。
vector::pop_back----输出vector尾部元素,end向后走一格。
vector::empty----判断目前vector里面是否有元素。
vector::erase(vector::iterator)-----删除vector中iterator指向的那个元素
vector::erase(vector::iterator1,vector::iterator2)----删除vector中
iterator1与iterator2之间的元素。
vector::begin----得到start;
vector::end-----得到finish;
vector::capacity----得到end of storage -start
vector::clear----清空vector里面的所有元素
vector::size--------得到(finish -start)/type
vector::insert(iterator ,type)----在vector中iterator位置前插入type。

template //使用std::alloc类为其空间置配器
class vector
{  
  // 开始定义巢集
  #typedef  type  value_type;
  #typedef  value_type *    iterator;
  #typedef  const value_type *  const_iterator;
  #typedef  value_type *    reference;
  #typedef   const value_type *  const reference
  //定义 其成员
  iterator start;
   iterator finish;
   iterator end of storage;
  public:
   iterator  begin(){ return  start;}
   iterator  end(){return finish;}
   size_t   capacity() {return sizetype(end of storage -start);}
   bool   empty(){return (finish==start)? 1,0;}
  
typedef simple_alloc data_alloc;// 使用该类进行空间配置(其实就是std::alloc的一个实例)
vector::vector(int n,type tp)
{  iterator t=data_alloc::allocate(n);//配置n个元素的空间
   ufinitialize——fill——n(t,n,tp)
   start=t;
   finish=t+n;
  end of storage=finish;
}
}












}
阅读(1143) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~