Vector的用法

我不知道大家是怎么理解Vector和怎样使用的,这篇文章主要是发表我自己对于Vector的看法,仅仅属于个人理解,如果有什么错误,也希望大家指正哈

目录

1:Vector的概念

2:Vector的使用


1:Vector的概念:

我个人把它当成数组来理解,当成一种可以操作的数组(一般数组我们没法快速操作,但用vector可以,使用内置函数就行了),那我们暂时就把它叫做向量。

vector<int>a;//这是一维数组
vector<int>a[10];//这个是二位数珠,后面的以此类推

2:Vector的使用:

(1)初始化:

我一般就单纯使用push_back()来添加元素(没有什么特别情况下)。

push_back()函数:在末尾添加元素

在这里输出vector中的元素呢,我们就是用数组下标来输出(前面不是说把vector当成数组理解蛮,嘿嘿嘿,其实就是我不懂滴!!!)当然了,还可以用迭代器来进行输出,这里不懂我们就把它当成死知识来记忆也行,后面遇到的多了,就懂了(其实是我自己说不明白,嘿嘿嘿)。具体我们看代码段!!!

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	for(int i=0;i<10;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}

(2)pop_back()函数

pop_back()函数:删除向量中的最后一个元素,无参数。

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	a.pop_back();
	cout<<endl;
	for(it=a.begin();it!=a.end();it++){
		cout<<*it<<" "; 
	}
	return 0;
}

(3)front()和back()

front()函数和back()函数:具有返回值,返回的分别是向量中的第一个元素和最后一个元素

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	cout<<endl;
	cout<<"第一个元素="<<a.front()<<" 最后一个元素="<<a.back();
	return 0;
}

 

 (4)size()和empty()

size()和empty():分别表示向量的大小和判断该向量是否为空,返回值分别是向量的大小和bool类型的值(如果为空,则返回True)

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	cout<<endl;
	cout<<"该向量的大小="<<a.size()<<endl;;
	if(!a.empty()){
		cout<<"该向量不是空的"<<endl;
	}
	return 0;
}

 (5)find()函数

find()函数:查找要寻找的数第一次出现的位置。find()函数用到三个参数,分别是查找位置的头地址,以及尾地址和要查找的元素返回值是第一次出现该元素的地址(我们暂时可以把它理解成迭代器)

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	cout<<endl;
	a.push_back(20);
	vector<int>::iterator iu,io;
	iu=find(a.begin(),a.end(),20);
	io=find(a.begin(),a.end(),10000);
	if(iu==a.end()){//注意哈,位置是从0开始计算的
		cout<<"没有找到20"<<endl;
	}
	else{
		cout<<"查找到,并且位置是"<<iu-a.begin()<<endl;//看不到位置,我们就暂时把它当成死知识来记忆
	}
	if(io==a.end()){
		cout<<"没有找到1000"<<endl;
	}
	else{
		cout<<"查找成功,并且位置是"<<io-a.begin()<<endl;
	}
	return 0;
}

 (6)insert()函数

insert()函数:添加元素,与push_back不同的是,它可以在任意位置添加元素

格式:第一个参数是迭代器的位置,第二个参数是添加的元素。(这里我就暂且只说一个,还有insert()函数的其他格式,比如插入多种元素,在一段区间中插入)注意哈,它是有返回值的,返回值是指向新元素的迭代器。

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	cout<<endl;
	a.insert(a.begin(),18);//在第一个位置插入了18
	a.insert(a.begin()+4,99);//在第5个位置插入了99
	for(it=a.begin();it!=a.end();it++){
		cout<<*it<<" ";
	}
	return 0;
}

 

(7)erase()函数和clear()函数

clear()函数:清空向量中的元素

erase()函数:删除指定位置的函数(用法与insert()函数一样)参数是一个,就是迭代器的位置。

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	cout<<endl;
	a.erase(a.begin()+5);//删除第六个位置
	for(it=a.begin();it!=a.end();it++){
		cout<<*it<<" ";
	}
	return 0;
}

(8)访问Vector中的元素

一:数组下标法访问(第一个元素都是从0开始的)

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
    for(int i=0;i<a.size();i++)cout<<a[i]<<" ";
	return 0;
}

 

二:迭代器访问法(可以当成死知识来记忆)

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	return 0;
}

Vector中的函数当然不仅有这么多,这篇文章主要是介绍经常使用的,其它函数大家有兴趣的可以自己去找找,学习学习(其实是我懒并且菜,哈哈哈哈)!!!!!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

稻子永不倒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值