vector<类型> v, vector<类型> v(n),vector<类型> v[n]的区别(浅析)

一,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。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值