读书人

c++ 关于容器的有关问题

发布时间: 2013-10-19 20:58:22 作者: rapoo

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,所以不存在你的假设了;

[解决办法]

引用:
Quote: 引用:

大括号是个定义域,每次循环row都是重新定义了的;
每次都往c5后面加新的row,所以不存在你的假设了;

我是说排除上面这种支持解释row已经重新定义的方法之外,有没有其它的方法证明它已经重新定义了,因为该地址不变啊。


自己写个简单的row类,析构函数里面加个打印就可以看出了

读书人网 >C++

热点推荐