首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-10-19 
c++ 关于容器的问题vector vectorint c5 //定义一个容器的容器for(int i0 i10 i++){vectorint

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类,析构函数里面加个打印就可以看出了

热点排行