【发布时间】:2019-10-08 15:16:17
【问题描述】:
我在访问另一个结构中的结构向量时遇到问题。可能有些东西我看不到...
让我们有这样的结构:
struct Struct_1 {
int Id;
int Mode;
string Name;
};
另一个类似这样的结构:
struct Record {
int Id;
int StructId;
string Name;
vector<Struct_1> structHolder;
};
现在我需要填写一些结构记录
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
}
当我尝试填充 structHolder 的数据时,它失败并显示“C++ 向量下标超出范围”有人知道问题出在哪里吗? 非常感谢!
【问题讨论】:
-
记录数!= structHolders 数。您必须使用单独的循环迭代 structHolder 向量。
-
Record的默认构造函数会将structHolder设置为空向量。要么写一个构造函数,.resize()在使用向量之前,要么使用structHolder.push_back(...) -
这到底是什么:
i recordVector.size()应该是 for 循环的条件子句?