C++ 未处理的异常访问冲突读取位置/使用结构的向量

C++ 未处理的异常访问冲突读取位置/使用结构的向量,c++,exception,vector,C++,Exception,Vector,在我搜索并意识到问题的原因是使用向量,但我仍然没有解决它之后,我面临“未处理的异常访问冲突读取位置” 在.h中,我定义了以下内容: struct inside { double y; vector <int> values; }; struct outside { int x; vector <inside> subInfo; vector <double> d; }; struct-inside { 双y

在我搜索并意识到问题的原因是使用向量,但我仍然没有解决它之后,我面临“未处理的异常访问冲突读取位置”

在.h中,我定义了以下内容:

struct inside
{ 
  double y;
  vector <int> values;

};

struct outside
{ 
     int x;
     vector <inside> subInfo;
     vector <double> d;


};
struct-inside
{ 
双y;
向量值;
};
外部结构
{ 
int x;
向量子信息;
载体d;
};
在.cpp中:

   vector <outside> mainInfo;

       ....
   // method_inti called one time just ...
   method_inti()
   {
        for(int i=1;i<=4;i++)
         {
            outside obj;
            obj.x = i;
            mainInfo.push_back(obj);
         }

   }


      ....
vectormaininfo;
....
//只调用了一次方法\u inti。。。
方法_inti()
{

对于
n=mainfo[i].d[(mainfo[i].d.size())-1]行中的(int i=1;i);
您将从d.size()中减去1以获得数组索引,但不能保证d.size()>=1


如果d恰好不包含任何元素,则您正在尝试访问数组索引-1,这将引发该异常。

请发布更多代码。到目前为止,我看不到任何错误。@billz调用mainsInfo[4]的位置是哪里?好的,在我的代码j method_fill() { ... for(i = 1; i <= 4; i++) { for (int j=0;j< mainInfo.size();j++) // here surly size = 4 { if(mainInfo[j].x == i) { inside obj; obj.y = i+1; obj.values.push_back(10.0); mainInfo[j].d.push_back(5.0); mainInfo[j].subInfo.push_back(obj); } } } ... } // update n val method also called many times.. updateNval_method(int t) { double n; for (int i=0; i< mainInfo.size();i++) { if(mainInfo[i].x == t) { n= mainInfo[i].d[(mainInfo[i].d.size())-1]; } } }