创建列表向量时出错

时间:2014-07-08 14:47:41

标签: c++ list vector

我尝试创建列表向量并向列表中添加元素。以下是我尝试的方式。但是我收到了分段错误错误 ' v [I] .push_back的(a)&#39 ;.我在哪里实施它错了?我该如何克服它?

#include<iostream>
#include<list>
#include<vector>
using namespace std;

int main()
{
    vector<list<int> > v;
    vector<list<int> >::iterator it;
    list<int>::iterator itt;
    int nv; //size of the vector
    cin>>nv;
    for(int i=0;i<nv;i++)
    {
        int a;
        cin>>a;
        while(a!=-1)
        {
            v[i].push_back(a);
            cin>>a;
        }

    }

    for(it=v.begin();it!=v.end();it++)
    {
        for(itt=(*it).begin();itt!=(*it).end();itt++)
        {
            cout<<*itt<<endl;
        }
    }

    return 0;
}

PS:请原谅我对这个问题的评论。

1 个答案:

答案 0 :(得分:2)

你的vector是空的,因为它是默认构造的:

int main()
{
    vector<list<int> > v;
    vector<list<int> >::iterator it;
    list<int>::iterator itt;
    int nv; //size of the vector
    cin>>nv;
    // Fix the size of the vector
    v.resize(nv);
    for(int i=0;i<nv;i++)
    {
        int a;
        cin>>a;
        while(a!=-1)
        {
            v[i].push_back(a);
            cin>>a;
        }

    }

    for(it=v.begin();it!=v.end();it++)
    {
        for(itt=(*it).begin();itt!=(*it).end();itt++)
        {
            cout<<*itt<<endl;
        }
    }

    return 0;
}