zoukankan      html  css  js  c++  java
  • 用vector实现二维向量

    如果一个向量的每一个元素是一个向量,则称为二维向量,例如

     

    [cpp] view plain copy
     
    1. vector<vector<int> >vv(3, vector<int>(4));//这里,两个“>”间的空格是不可少的  

     

    将构造一个二维向量vv,它含有三个元素,每个元素含有4个int型元素的向量。编译器两次调用vector的构造函数构造对象vv,第一次调用构造函数构造了一个无名的含有4个0的vector<int>对象:

     

    [0] [1] [2] [3]
    0 0 0 0


    第二次调用构造函数,以这个无名向量为初值初始化它的三个元素,结果是:

     

    vv [0] [1] [2] [3]
    [0] 0 0 0 0
    [1] 0 0 0 0
    [2] 0 0 0 0


    vv[i]表示第i(i=0,1,2)行的元素组成的向量。vv.size()的值是3,vv[1].size()的值是4.

    一个二维向量每个元素的长度可以不同,例如

     

    [cpp] view plain copy
     
    1. vector<vector<int> >vv;  
    2. for(int c = 1; c <= 3; c++)  
    3.     vv.push_back(vector<int>(c,0));  

     

    上面代码产生一个长度不同的二维向量,第一行只有1个元素,第二行有两个,第三行三个。

     

    应用例子:输入一个n个整数,将他们分别除以选定的一个整数(称为模),按余数将这些整数分组。

     

    [cpp] view plain copy
     
    1. #include <iostream>  
    2. #include <vector>  
    3. using namespace std;  
    4.   
    5. void classify(vector<int>& v,int mode, vector<vector<int> >& vv)  
    6. {  
    7.     for (vector<int>::const_iterator iter = v.begin(); iter != v.end(); iter++)  
    8.     {  
    9.         int index = (*iter) % mode;//取余数  
    10.         vv[index].push_back(*iter);//插入元素  
    11.     }  
    12. }  
    13.   
    14. int main()  
    15. {  
    16.     int mode;//模  
    17.     cin>>mode;  
    18.     vector<vector<int> >vv(mode);//定义了一个有mode行的二维向量  
    19.     int n;//n个整数  
    20.     cin>>n;  
    21.     vector<int>v(n);//一维向量,保存n个整数  
    22.     for (int i = 0;i < n; i++)  
    23.         cin>>v[i];  
    24.   
    25.     //开始分类  
    26.     classify(v,mode,vv);  
    27.   
    28.     for (i = 0; i < mode; i++)  
    29.     {  
    30.         cout<<"余数是 "<<i<<":";  
    31.         if(vv[i].empty())  
    32.             cout<<endl;  
    33.         else  
    34.         {  
    35.             for (vector<int>::const_iterator p = vv[i].begin(); p != vv[i].end(); p++)  
    36.                 cout<<*p<<" ";  
    37.             cout<<endl;  
    38.         }  
    39.     }  
    40.     return 0;  
    41. }  


    运行结果:

     

     

  • 相关阅读:
    Bzoj1072--Scoi2007排列perm
    Bzoj1041--Haoi2008圆上的整点
    Bzoj3932--Cqoi2015任务查询系统
    HDU 1024 Max Sum Plus Plus(DP)
    HDU 1029 Ignatius and the Princess IV
    【noip模拟题】数列
    Hello World
    vue-router 进阶
    vue2.0 源码解读(二)
    vue2.0 源码解读(一)
  • 原文地址:https://www.cnblogs.com/byteHuang/p/8168007.html
Copyright © 2011-2022 走看看