vector

能够根据需要随时自动调整自身的大小以便容下所要放入的元素。

push_back(elem)  // 在尾部加入一个数据。

pop_back() // 删除最后一个数据。

insert(pos,elem)    // pos位置插入一个elem拷贝,传回新数据位置。

a.size()                 //获取向量中的元素个数

a.empty()                //判断向量是否为空

a.clear()                //清空向量中的元素

vector s[maxs];     是一个二维的vector  这个后面可以有maxs个数组  

比如 s[i][t];    也可以这样获取 s[i].begin()   s[j].end();

vector定义一个二维的数组:

   vector <int> v[10010];

向数组里添加元素       v[x].push_back(i);   

遍历元素 

 for(int i=1;i<=n;i++)

    for(int j=0;j<v[i].size();j++)
  
            cout<<v[i][j];

 

 

 

应用:

tts座位分配

 


int main()
{
   int n;
   cin>>n;
   vector <int> v[10010];
   int a[10010]; //记录每个学校队员数
   int f[10010]; //记录是否坐满  1&0
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        a[i]*=10;
    }
    int i=1;
    int stu=0,sch=0;
    while(1)
    {
        int x=1; //学校编号
        while(x<=n)
        {
            if(v[x].size()<a[x])
            {
                stu++;
                v[x].push_back(i);
                if(sch==n-1) i+=2;
                else i++;
            }
            if(!f[x]&&v[x].size()>=a[x])
            {
                f[x]=1;sch++;
            }
            x++;
        }
        if(sch==n) break;
    }
    for(int i=1;i<=n;i++)
    {
        cout<<"#"<<i<<endl;
        for(int j=0;j<v[i].size();j++)
        {
            cout<<v[i][j];
            if((j+1)%10==0)
            {
                cout<<endl;
                continue;
            }
            if(j!=v[i].size()-1)
              cout<<" ";
        }
    }

    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值