注册 登录
编程论坛 C++教室

嵌套vector问题----十万火急

morose2004 发布于 2011-06-08 06:09, 2165 次点击
想要把一个vector嵌套里的元素存到另外一个vector嵌套里
程序如下。但是运行出错。不知道啥原因?望高手指点下?说明下为什么不对。如果这种方法不对,正确的应该是什么样的?十万火急!!!!
#include<iostream>
#include<vector>
using namespace std;
int main()
{
    int a[]={1,2,3,4,5,6,7,8,9,10};
    vector<int> temp1(a,a+5),temp2(a+5,a+10);
    vector<vector<int> > vec;
    vec.push_back(temp1);
    vec.push_back(temp2);
    for(int i=0;i<vec.size();i++)
        {
            for(int j=0;j<vec.at(i).size();j++)
            cout<<vec.at(i).at(j)<<" ";
    cout<<endl;
    }
    vector<int> obj1;
    vector<vector<int> > obj;
    for(int i=0;i<vec.size();i++)
        {
            for(int j=0;j<vec.at(i).size();j++)    //可能有问题,不知为什么

                obj1[j]=vec[i][j];
            obj.push_back(obj1);
    }
    cout<<obj.size()<<endl;
    cout<<obj.at(0).size()<<endl;
    cout<<obj.at(1).size()<<endl;
    for(int i=0;i<obj.size();i++)
        {
            for(int j=0;j<obj.at(i).size();j++)
            cout<<obj.at(i).at(j)<<" ";
            cout<<endl;}

    return 0;
}
3 回复
#2
rjsp2011-06-08 08:29
obj1[j]=vec[i][j]; // obj1的size()为0,怎么可能有obj1[j]?
#3
a3733392052011-06-09 22:55
vector<int> obj1;
//obj1.size()==0
    vector<vector<int> > obj;
//obj.size()==0
所以obj1[j]=vec[i][j];这里就错了
#4
hoho5682011-06-09 23:14
自己已经标出来了,只是忽略了vector变量的赋值只能用push_back()的形式,而不可以采用下标的方式赋值!
1