访问结构向量

Axe*_*F93 4 c++ struct vector

我在访问另一个结构中的结构向量时遇到问题。可能有些事情我无法解决...

让我们有这样的结构:

struct Struct_1 {
  int Id;
  int Mode;
  string Name;
};
Run Code Online (Sandbox Code Playgroud)

这样的另一个结构:

struct Record {
  int Id;
  int StructId;
  string Name;
  vector<Struct_1> structHolder;
};
Run Code Online (Sandbox Code Playgroud)

现在我需要填写一些结构记录

int recordCount = 10;
vector<Record> recordVector(recordCount);
for(int i = 0; i < recordVector.size(); ++i){
   recordVector[i].Id = ...
   recordVector[i].StructId = ...
   recordVector[i].Name = ...
   // till now it is ok 
   recordVector[i].structHolder[i].Id = ..
   recordVector[i].structHolder[i].Mode = ..
   // and here it fails when i access vector

}
Run Code Online (Sandbox Code Playgroud)

当我尝试填充structHolder的数据时,它失败并显示“ C ++向量下标超出范围”。有人知道哪里出了问题吗?非常感谢!

Hub*_*ubi 5

recordVector[i].structHolder是空的std::vector。因此,您无法访问它的任何项目。

一个解决方案是,以填补的一个实例Struct_1push_back应用到矢量

Struct_1 myStruct;
myStruct.Id = 1
recordVector[i].structHolder.push_back(myStruct);
Run Code Online (Sandbox Code Playgroud)