c++ 关于容器的问题
vector< vector<int> > c5; //定义一个容器的容器
for(int i=0; i<10; i++)
{
vector<int> row; //**************
cout<< (void *)&row << endl;
for(int j=0; j<10; j++)
{
row.push_back(10*i+j);
}
c5.push_back(row);
}
求问:打*号那句,外层每循环一次,row是重新定义一次,还是只是开始定义的那一次,我打印了它的地址,没有改变(不能说明它没有重新定义,可能分配了同一个地址给它),问题是如果没有重新定义,执行row.push_back();这句,应该是一直往容器最后添加数据,最后c5不会是0~99,但问题是,c5最后就是0~99.求解????? 容器,c++ ,作用域
[解决办法]
大括号是个定义域,每次循环row都是重新定义了的;
每次都往c5后面加新的row,所以不存在你的假设了;
[解决办法]
自己写个简单的row类,析构函数里面加个打印就可以看出了