<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容器应该预留多少个元素的存储空间。