vector的中文名字叫做“动态数组”或者“不定长数组”,有时也被翻译成“容器”。
初始化定义容器(可以为int,double,char,string,struct)等类型(一维)
一维,二维的动态数组
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>a;//默认初始化,a为空 还可以为double,char,string型
vector<int>b(a);//用a定义b
vector<int>a(100,6);//a有100个值为6的元素
vector<string>a(10,"hellow");//a有10个值为hellow的元素
vector<string>b(a.begin(),a.end());//b是a的复制
struct point{int x;y;}; vector<point>a;//定义结构型数组
vector<int>a[MAXN]; //一维固定的
vector<vector<int>>a[M];//第二维是动态的
}
}
此处的迭代器本质上就是指针移动,vector<int>::iterator it :可以首先定义it为一个指针先指向a数组的首地址,当这种指针未指向末尾时候,指针地址+1,继续遍历,而(*it)输出的是这个指针所对应的元素。
s.empty()函数的使用:判断数组s是否为空,若为空则返回1,否则返回0
#include<iostream>
#include<vector>
using namespace std;
vector<int>s; //初始化s为空
int main()
{
if(s.empty()) cout<<"empty"<<endl;//如果s为空,则返回1,否则返回0,若 if(1)则输出empty
vector<int>s(10,6);//给s赋值后,s容器内含有10个元素,内容都是6 ,则不为空,返回0
if(!s.empty()) cout<<"NO empty"<<endl;//!取反符号,0变成1
}
a.size()函数 :表示a数组的长度
a.push_back(x)函数:表示将数据x插入a数组的尾部
#include<iostream>
#include<vector>
using namespace std;
vector<int>s; //初始化s为空
vector<int>a;
int main()
{
int x,i;
for(i=0;i<5;i++)
{
cin>>x;//给x输入
a.push_back(x);//每次输入完后将x插入到容器a的尾部
}
for(i=0;i<a.size();i++)//a.size() 这个函数求得表示a的长度
{
cout<<a[i]<<" ";
}
}
(1)a.insert()函数 :某个位置插入元素,插入几个
第一种格式:a.insert(a,b,c) a表示位置,b表示数量,c表示内容 ,在a位置插入b个c
第二种格式:a.insert(a,c) a表示位置,c表示内容 ,在a位置插入1个c
(2) a.end()函数 :表示a数组的尾地址
(3) a.begin()函数 的使用:表示a数组的首地址
#include<iostream>
#include<vector>
using namespace std;
vector<int>s; //初始化s为空
vector<int>a;
int main()
{
int x,i;
for(i=0;i<5;i++)
{
cin>>x;//给x输入
a.push_back(x);//每次输入完后将x插入到容器a的尾部
}
a.insert(a.begin(),111);//在动态数组a的(最前面 )头部插入111
a.insert(a.end(),3,9);//在动态数组a的(最后面 )尾部插入3个9 (中间的数字表示个数),最右边是内容
a.insert(a.end()-2,666);//在动态数组a的倒数第三个位置插入666
for(i=0;i<a.size();i++)
cout<<a[i]<<" ";
}
a.pop_back()函数 :删除a数组最后位置的一个元素
a.erase()函数:删除a数组某个位置或某区间内全部元素(区间范围是前闭后开)
a.erase(a.begin()+i,a.end()+j)删除的区间是位置[i,j-1]
#include<iostream>
#include<vector>
using namespace std;
vector<int>s; //初始化s为空
vector<int>a;
int main()
{
int x,i;
for(i=0;i<10;i++)
{
cin>>x;//给x输入
a.push_back(x);//每次输入完后将x插入到容器a的尾部
}
a.pop_back();//表示删除动态数组a的最后一个元素
a.erase(a.begin());//删除第一个元素
for(i=0;i<a.size();i++)//a.size() 这个函数求得表示a的长度
cout<<a[i]<<" ";
cout<<endl;
a.erase(a.begin()+1,a.begin()+3);//删除当前区间[2,4)内的元素,即删除第2,第3个位置的元素
for(i=0;i<a.size();i++)//a.size() 这个函数求得表示a的长度
cout<<a[i]<<" ";
return 0;
}
使用sort和reverse函数要调用这个头文件 #include<algorithm>
reverse(a,b):将a和b位置区间内的元素反转(翻转)
sort(a,b):将a和b位置区间内的元素按照从小到大的顺序排序(升序)
#include<iostream>
#include<vector>
#include<algorithm>//使用sort和reverse要调用这个头文件
using namespace std;
vector<int>s; //初始化s为空
vector<int>a;
int main()
{
int x,i;
for(i=0;i<5;i++)
{
cin>>x;//给x输入
a.push_back(x);//每次输入完后将x插入到容器a的尾部
}
reverse(a.begin(),a.end());//将数组a的全部元素全部 反转(翻转)过来
for(i=0;i<a.size();i++)
cout<<a[i]<<" ";
}
#include<iostream>
#include<vector>
#include<algorithm>//使用sort和reverse要调用这个头文件
using namespace std;
vector<int>s; //初始化s为空
vector<int>a;
int main()
{
int x,i;
for(i=0;i<5;i++)
{
cin>>x;//给x输入
a.push_back(x);//每次输入完后将x插入到容器a的尾部
}
sort(a.begin(),a.end());//将数组a的全部元素按照从小到大的顺序排序(升序)
for(i=0;i<a.size();i++)
cout<<a[i]<<" ";
}
a.clear函数:清除当前容器中所有元素
#include<iostream>
#include<vector>
#include<algorithm>//使用sort和reverse要调用这个头文件
using namespace std;
vector<int>s; //初始化s为空
vector<int>a;
int main()
{
int x,i;
for(i=0;i<5;i++)
{
cin>>x;//给x输入
a.push_back(x);//每次输入完后将x插入到容器a的尾部
}
a.clear();//清空容器中所有的数据
for(i=0;i<a.size();i++)
cout<<a[i]<<" ";
}
(1) a.empty()函数:判断数组a是否为空,若为空则返回1,否则返回0
(2) a.size()函数 :表示a数组的长度
(3) a.push_back(x)函数:表示将数据x插入a数组的尾部
(4) a.insert()函数 :某个位置插入元素,插入几个
第一种格式:a.insert(a,b,c) a表示位置,b表示数量,c表示内容 ,在a位置插入b个c
第二种格式:a.insert(a,c) a表示位置,c表示内容 ,在a位置插入1个c
(5) a.end()函数 :表示a数组的尾地址
(6) a.begin()函数 的使用:表示a数组的首地址
(7)a.pop_back()函数 :删除a数组最后位置的一个元素
(8)a.erase()函数:删除a数组某个位置或某区间内全部元素(区间范围是前闭后开)
a.erase(a.begin()+i,a.end()+j)删除的区间是位置[i,j-1]
(9)a.clear()函数:清除当前容器中所有元素
(10)reverse函数:reverse(a,b):将a和b位置区间内的元素反转(翻转)
(11)sort函数:sort(a,b):将a和b位置区间内的元素按照从小到大的顺序排序(升序)
使用sort和reverse函数要调用这个头文件 #include<algorithm>