【vector】常用函数

目录

一维数组 

声明

 访问

 插入

删除

 容量

 二维数组

 声明二维数组

长度


 

一维数组 

声明

vector<int> a;           //无参数 构造一个空的vector,
vector<int> a(10);       //定义了10个整型元素的向量,圆括号内为元素个数,但没有给出初值,其值是不确定的。
vector<int> a(10,1);     //定义了10个整型元素的向量,且给出每个元素的初值为1
vector<int> a(b);        //用b向量来创建a向量,整体复制性赋值, 拷贝构造
vector(begin,end);       //复制[begin,end)区间内另一个数组的元素到vector中
vector<int> v3=a ;       //移动构造
vector<int> a(b.begin(),b.begin+3);   //定义了a值为b中第0个到第2个(共3个)元素
vector<int> a(b,b+6);    //从数组中获得初值,b[0]~b[5]

 访问

a.begin();           // 返回指向容器第一个元素的迭代器
a.begin()+i          //返回a[i]
a.end();             // 返回向量尾指针,指向向量最后一个元素的下一个位置
a.back();             //返回a的最后一个元素
a.front();            //返回a的第一个元素
reverse_iterator rbegin():反向迭代器,指向最后一个元素
reverse_iterator rend():反向迭代器,指向第一个元素之前的位置
//迭代器用法
 vector<int>::iterator it;
 for(it=a.begin();it!=a.end();it++){
		cout<<*it<<" ";
	}
//条件删除
for (it = a.begin(); it != it.end(); )
	{
		if (*it>2)//删除大于2的元素
		{
			a.erase(it);
		}
		else
		{
			it++;
		}
// auto遍历  
 for (auto x: vecint) {
		cout << x << " ";
	 }

1.通过下标访问

和访问普通的数组是一样的

2.通过迭代器访问

迭代器可以理解为一种类似指针的东西

vector::iterator it;定义迭代器,得到了迭代器it之后,可以通过*it来访问vector中的元素

3.v[i]和*(v.begin()+i)是等价的

4.迭代器来实现了两种自加操作和自减操作

5.在常用STL容器中,只有在vector和string中,才允许使用v.begin()+3这种迭代器加上整数的写法

 插入

a.push_back(x)    //在vector后面添加一个元素x
a.push_back(5);   //在a的最后一个向量后插入一个元素,其值为5
insert(it,x)      //用来向vector的任意迭代器it处插入一个元素x
a.insert(a.begin()+1,5);  //在a的第1个元素后插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4
a.insert(a.begin()+1,3,5);//在a的第1个元素后插入3个数,其值都为5
a.insert(a.begin()+1,b+3,b+6);//b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8,插入元素后为1,4,5,9,2,3,4,5,9,8
a.swap(b);       //将b中数据全部移到a中,此时b中为空了

删除

a.pop_back();         //删除a向量的最后一个元素
a.clear();            //清空a中的元素
a.erase(a.begin(),a.end());//清空a中的元素
a.erase(a.begin()+i,a.end()+j);删除区间[i,j-1];区间从0开始
a.empty();            //判断a是否为空,空则返回ture,不空则返回false

 容量

a.size();          //返回a中元素的个数;
a.empty();         //判断a是否为空,空则返回ture,不空则返回false
a.capacity();      //返回a在内存中总共可以容纳的元素个数
a.rezize(10);      //将a的现有元素个数调至10个,多则删,少则补,其值随机
a.rezize(10,2);    //将a的现有元素个数调至10个,多则删,少则补,其值为2
a.reserve(100);    //将a的容量(capacity)扩充至100
find(a.begin(),a.end(),20); //三个参数,分别是查找位置的头地址,以及尾地址和要查找的元素。返回值是第一次出现该元素的地址
reverse(vec.begin(),vec.end());	//将元素翻转,即逆序排列!
sort(vec.begin(),vec.end());	//(默认是按升序排列,即从小到大)
sort(a,a+len(a),cmp);//将数组a按照cmp函数指定的规则排列,例如如下的为降序规则
bool cmp(int para1,int para2)
{
    return a>b;
}

 二维数组

 声明二维数组

vector<vector<int> > A;//正确的定义方式
vector<vector<int>> A;//c++11之前这样定义是错误的,c++11之后支持这种定义

长度

len = A.size();  //vector<vector<int> >A中的vector元素的个数
len = A[i].size();  //vector<vector<int> >A中第i个vector元素的长度

参考链接:

vector容器 常用函数_vector函数_可即的博客-CSDN博客

vector容器 常用函数_vector函数_可即的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值