我的C++STL的二维数组为什么不能输出

#include
#include
using namespace std;

void print(deque<deque> d)
{
for(deque<deque>::iterator it=d.begin();it != d.end();it++)
{
for(deque::iterator vit=(*it).begin();vit != (*it).end();vit++)
{
cout <<*vit<< " ";
}
cout <<endl;
}
}
int main()
{
deque<deque> d;
for(int i=0;i<5;i++)
{
deque a;
d.push_back(a);
}
cout<<d.size();
for(int i=0;i<d.size();i++)
{
for(int j=0;j<10;j++)
{
int score =rand()%40+60;
d[i][j]=score;
}
}
print(d);
//
// for(int i=0;i<d.size();i++)
// {
// for(int j=0;j<10;j++)
// {
// cout<<d[i][j]<<" ";
// }
// cout<<endl;
// }

return 0;

}

```


deque<deque>这么写不对,应该是
deque< deque<int> >

你这里d虽然跟二维数组效果一样,但是d不是二维数组,是容器。容器跟数组不是一回事。你的代码修改如下:

#include <iostream>
#include <deque>
using namespace std;

void print(deque<deque<int> > d)
{
    for(deque<deque<int> >::iterator it=d.begin();it != d.end();it++)
    {
        for(deque<int>::iterator vit=(*it).begin();vit != (*it).end();vit++)
        {
            cout <<*vit<< " ";
        }
        cout <<endl;
    }
}
int main()
{
    deque<deque<int> > d;
    for(int i=0;i<5;i++)
    {
        deque<int> a;
        for(int j=0;j<10;j++)
        {
            int score =rand()%40+60;
            a.push_back(score);
        }
        

        d.push_back(a);
    }



    cout<<d.size() << endl;
    /*for(int i=0;i<d.size();i++)
    {
        for(int j=0;j<10;j++)
        {
            int score =rand()%40+60;
            d[i][j]=score;
        }
    }*/
    print(d);
    //
    // for(int i=0;i<d.size();i++)
    // {
    // for(int j=0;j<10;j++)
    // {
    // cout<<d[i][j]<<" ";
    // }
    // cout<<endl;
    // }

    return 0;
}