<C++学习十二>标准库vector类型

摘要: 本篇博客仅作为笔记,如有侵权,请联系,立即删除(网上找博客学习,然后手记笔记,因纸质笔记不便保存,所以保存到网络笔记)

  基本操作:

  (1)头文件#include<vector>;

  (2)创建vector对象;

vector<type> vec;

  (3)尾部插入数字;

vec.push_back(a);

  (4)使用下标访问元素;

  (5)使用迭代器;

vector<int>::iterator it;

for(it = vec.begin();it != vec.end();it++)

  cout << *it << endl;

  (6)插入元素;

vec.insert(vec.begin()+i,a); //在第i+1个元素前面插入a

  (7)删除元素;

vec.erase(vec.begin()+2); //删除第三个元素

  (8)向量大小;

vec.size();

  (9)清空;

vec.clear();

算法:

  (1)使用reverse()将元素翻转

reverse(vec.begin(),vec.end()); //将元素翻转

  (2)使用sort排序

sort(vec.begin(),vec.end()); //默认按照升序排序

  可以重写sort排序函数,使排序函数按照降序排序

bool comp(const int &a,const int &b){
    return a > b;    
}
sort(vec.begin(),vec.end(),comp); //降序排序

注意:vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库将负责管理与存储;使用vector之前,包含相应的头文件。

1、vector对象的定义和初始化

vector v1; //vector保存类型为T对象,v1为空
vector v2(v1); //v2是v1的一个副本
vector v3(n,i); //v3包含n个值为i的元素
vector v4(n); //v4含有值初始化的元素的n个副本,创建确定个数的元素
vector<int> ivec1; //int型vector
vector<int> ivec2(ivec1); //复制ivec1
vector<int> ivec3(10,-1); //初始化10个int型vector,值为-1
vector<string> svec(10,'hi'); //10个string型svec,值为'hi'

关键概念:vector对象动态增长,若创建时没有初始化,将由标准库自动初始化

vector<string> fvec(10); //10个string,由标准库初始化

2、vector对象的操作

  vector标准库提供了许多类似于string对象的操作:

  (1)v.empty() -- 如果为空,则返回true,否则返回false

  (2)v.size() -- 返回v中元素的个数

  (3)v.push_back(t) -- 在v的末尾增加一个值为t的元素

  (4)v[n] -- 返回v中位置为n的元素

  (5)v1 == v2 -- 如果v1与v2相等,则返回true

注意:1、C++程序员有限选用!=而不是 <来编写循环判断条件

   2、必须已经存在的元素才使用下标,不存在使用下标来动态扩展的方式,动态扩展应该选用push_back(ix);

Capacity和reserve成员

  capacity操作获取在容器需要分配更多的存储空间之前能够存储的元素总数,而reserve操作则告诉vector容器应该预留多少个元素的存储空间。

posted @ 2018-10-30 21:43  daisy_ai  阅读(255)  评论(0编辑  收藏  举报