c++中动态数组vector的使用方法

88 篇文章 5 订阅
3 篇文章 0 订阅

如果要使用vector,需要头文件#include< vector >
1、vector容器内元素的访问:
①通过下标进行访问:
这种访问和正常的数组类似,只是需要注意的是,需要用push_back将元素放入数组中;

#include <iostream>
#include <vector> 
using namespace std;
int main() {
    vector<int >v;
    for(int i=0;i<5;i++){
    	v.push_back(i);
	}
	for(int i=0;i<5;i++){
		cout<<v[i]<<" ";
	}
	return 0;
}

输出结果:
在这里插入图片描述
②通过迭代器的方式进行访问:

#include <iostream>
#include <vector> 
using namespace std;
int main() {
    vector<int >v;
    for(int i=0;i<5;i++){
    	v.push_back(i);
	}
	vector<int>::iterator it;
	//等价于auto it;
	for(it=v.begin();it!=v.end();it++){
		cout<<*it<<" ";
	}
	return 0;
}

输出结果一样,这里循环结束的条件可以是it!=v.end(),也可以是it<v.end(),只有再vector和string试用,在别的比如set是不试用的

2、vector常用的函数解析
①push_back(i)指的是将i放入动态数组中,上述代码已展示,这里就省略了。
②pop_back 有添加就会有删除,这里指的是删除数组末尾的元素,代码展示:

#include <iostream>
#include <vector> 
using namespace std;
int main() {
    vector<int >v;
    for(int i=0;i<5;i++){
    	v.push_back(i);
	}
	vector<int>::iterator it;
	//等价于auto it;
	v.pop_back();
	for(it=v.begin();it<v.end();it++){
		cout<<*it<<" ";
	}
	return 0;
}


此时的输出结果:将末尾的4删除了。在这里插入图片描述
③size
这是用来获得vector中的元素个数,返回的是unsigned类型(一般用int不会出错),为了更方便理解,还是一段代码:

#include <iostream>
#include <vector> 
using namespace std;
int main() {
    vector<int >v;
    for(int i=0;i<5;i++){
    	v.push_back(i);
	}
	vector<int>::iterator it;
	//等价于auto it;
	v.pop_back();
	for(it=v.begin();it<v.end();it++){
		cout<<*it<<" ";
	}
	cout<<endl<<v.size();//一共四个元素
	return 0;
}


输出结果:在这里插入图片描述
④clear:
用于清空所有的元素:

#include <iostream>
#include <vector> 
using namespace std;
int main() {
    vector<int >v;
    for(int i=0;i<5;i++){
    	v.push_back(i);
	}
	vector<int>::iterator it;
	//等价于auto it;
	v.pop_back();
	for(it=v.begin();it<v.end();it++){
		cout<<*it<<" ";
	}
	cout<<endl<<v.size();
	v.clear();//清除数组
	cout<<endl<<v.size();//此时输出0
	return 0;
}


在这里插入图片描述
⑤insert
指的是在特定的位置插入一个元素,这里需要用到迭代器;

#include <iostream>
#include <vector> 
using namespace std;
int main() {
    vector<int >v;
    for(int i=0;i<5;i++){
    	v.push_back(i);
	}
	auto it=v.begin()+2;//定义it指向数组中下标为2的位置
	v.insert(it,9);//在该位置将9插入
	//等价于v.insert(v.begin()+2,9);
	for(int i=0;i<v.size();i++){
		cout<<v[i]<<" ";
	}
	return 0;
}


输出结果:在这里插入图片描述
⑥erase
与set一样,依旧是两种用法,第一种,删除指定位置的元素;

#include <iostream>
#include <vector> 
using namespace std;
int main() {
    vector<int >v;
    for(int i=0;i<5;i++){
    	v.push_back(i);
	}
	v.insert(v.begin()+2,9);
	v.erase(v.begin()+3);
	for(int i=0;i<v.size();i++){
		cout<<v[i]<<" ";
	}
	return 0;
}


在这里插入图片描述
第二种,删除一个区间的元素[first,last)(左闭右开)

#include <iostream>
#include <vector> 
using namespace std;
int main() {
    vector<int >v;
    for(int i=0;i<5;i++){
    	v.push_back(i);
	}
	v.insert(v.begin()+2,9);
	v.erase(v.begin()+3,v.begin()+5);//这里是删除从第一个元素开始的第三个到第四个(没有第五个,右区间是开的)
	for(int i=0;i<v.size();i++){
		cout<<v[i]<<" ";
	}
	return 0;
}


在这里插入图片描述
这里发现,clear函数和erase(begin,end)是一个意思,那有人会问,明明右边是开区间,那么最后一个元素应该没法删除啊?
这里的end指的是最后一个元素地址的下一个地址,所以包含最后一个元素。

如果你觉得有帮助,请点个赞!

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_努力努力再努力_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值