我不知道大家是怎么理解Vector和怎样使用的,这篇文章主要是发表我自己对于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;
}