vector不定长数组

 

看书的时候第n次见到vector了,一时兴起:既然这么好用就掌握它吧。

看书看别人的博客发现原理并不复杂。并且!居然支持任意位置插入!!一直以来无限头疼的问题,唯有二叉查找树--平衡树能解决的艰难的问题居然被STL封装好了!

立刻把之前树状数组折腾了好久的题拿出来用vector做。

五分钟搞定!!!

 

一. 向量

  向量是一种对象实体,能够容纳许多类型相同的元素,因此被称为容器。vector属于STL(标准模板库),广义上可以看成是数组的增强版。

 

二. 基本操作

  #include<vector>  //头文件

  vector<int> a ;    //声明一个int型向量a

  vector<int> a(10) ;    //声明一个初始大小为10的向量

  vector<int> a(10, 1) ;  //声明一个初始大小为10且初始值都为1的向量

  vector<int> b(a) ;    //声明并用向量a初始化向量b

  vector<int> b(a.begin(), a.begin()+3) ;    //将a向量中从第0个到第2个(共3个)作为向量b的初始值

 a.size()      //获取向量中的元素个数

 a.empty()    //判断向量是否为空

 a.clear()   //清空向量中的元素

a = b ;       //将b向量复制到a向量中

a == b ;    //a向量与b向量比较, 相等则返回1

a.insert(a.begin(), 1000);      //将1000插入到向量a的起始位置前

  a.insert(a.begin(), 3, 1000) ;   //将1000分别插入到向量元素位置的0-2处(共3个元素)

vector<int> a(5, 1) ;

  vector<int> b(10) ;

  b.insert(b.begin(), a.begin(), a.end()) ;     //将a.begin(), a.end()之间的全部元素插入到b.begin()前

b.erase(b.begin()) ;       //将起始位置的元素删除

  b.erase(b.begin(), b.begin()+3) ;      //将(b.begin(), b.begin()+3)之间的元素删除

  b.swap(a) ;      //a向量与b向量进行交换

 

posted @ 2019-06-10 19:06  hélium  阅读(605)  评论(0编辑  收藏  举报