一,vector<类型> n----创建一个动态数组n,是指没有确定容量,这时候需要使用push_back函数进行输入
二,Vector<类型>标识符(最大容量)
对于vector<int>arr(n)
,相当于vector<int>arr(n,0)
,也就是vector<int>arr(n,0)
,对一个确定容量n的动态数组 arr的所有元素赋值0 。
如果这种情况再使用push_back,则数组不会发生变化,即插入不进去。如图:
三,Vector<类型>标识符(最大容量,初始所有值)
vector <int>a[5]; 相当于 vector<vector<int > > a(5);
二维数组
可以理解为是二维数组,定义了一个长度为5的数组,数组的每个元素都是一个Vector类型的变量。这个a[5]可以理解为一维长度是5,这个5需要是已知参数,才算一维长度不变,二维长度可变的矩阵。
#include<iostream>
#include<vector>
using namespace std;
vector<string> city; // 创建一个存放城市的容器
vector<string> dig[1000]; // 创建一个二维动态数组存放快递单号
int Myfind(string s) // 定义一个功能函数来判断输入的城市是否已经存在
{
for(int i=0;i<city.size();i++)
{
if(city[i]==s) return i; // 循环遍历,如果输入的城市与数组中的相等,返回数组中的下标。
}
return -1;
}
int main()
{
int n;
cin>>n; // 输入城市的个数
for(int i=0;i<n;i++)
{
string d,c;
cin>>d>>c; // 输入城市名称,快递单号
int flag=Myfind(c); // 判读城市是否存在
if(flag==-1){ // 不存在
city.push_back(c); // 将城市添加到整个数组的最后面
dig[city.size()-1].push_back(d);// 同时将对应的快递单号添加到与对应城市相同
// 的下标数组,因为数组从0开始,所以要减一。
}
else dig[flag].push_back(d); // 如果存在,直接把单号添加到对应下标
} 第flag个vector数组dig的后面加上单号d。
for(int i=0;i<city.size();i++)
{
cout<<city[i]<<" "<<dig[i].size()<<endl;// 输出城市,快递单号的个数
//第i个动态数组的大小
for(int j=0;j<dig[i].size();j++)
cout<<dig[i][j]<<endl; // 输出快递单号 第i个动态数组的第j个元素
}
for(int i=0;i<n;i++)
{
string d,c;
cin>>d>>c; // 输入城市名称,快递单号
int flag=Myfind(c); // 判读城市是否存在
if(flag==-1){ // 不存在
city.push_back(c); // 将城市添加到整个数组的最后面
dig[city.size()-1].push_back(d);// 同时将对应的快递单号添加到与对应城市相同
// 的下标数组,因为数组从0开始,所以要减一。
}
else dig[flag].push_back(d); // 如果存在,直接把单号添加到对应下标
} // 第flag个vector数组dig的后面加上单号d。