2D矢量分割故障

2D vector segmentation fault

本文关键字:故障 分割 2D      更新时间:2023-10-16

以下代码给我一个细分故障,我不明白问题。我认为我使用向量的方式存在一些错误,但我不知道那是什么。请帮助。

#include<iostream>  
#include<sstream>  
#include<vector>  
#include<algorithm>
using namespace std;  
int main()  
{
    int T;
    vector<int>n,m;
    vector<vector<int> >arr;
    int temp;
    cin>>T;
    for(int i=0;i<T;i++) 
    {
        cin>>temp;
        n.push_back(temp);
        cin>>temp;
        m.push_back(temp);
        vector<int>temp_vec(temp);
        for(int j=0;j<temp;j++)
        {
            int temp2;
            cin>>temp2;
            temp_vec[j]=(temp2);
        }
        sort(temp_vec.begin(),temp_vec.end());
        arr.push_back(temp_vec);
        cout<<endl;
    }
    return(0);
}

当您声明任何类型的向量时,它都没有任何元素,直到您初始化并将该值放入其中。您的代码:

arr.push_back(temp_vec);

试图将temp_vec插入位置 0 的向量arr内的不存在的向量。

您应该知道要使用的向量的大小,然后用构造函数的大小初始化:

vector<vector<int> >arr(size);

例如:

vector<vector<int> >arr(64);

这将用64或x空元素初始化向量arr

与此

相同