访问结构的向量
Accessing vector of structures
我在访问另一个结构中的结构向量时遇到问题。可能有些事情是我无法理解的...
让我们有这样的结构:
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
}
当我尝试填写结构持有人的数据时,它失败并显示"C++向量下标超出范围"有人知道哪里有问题吗? 多谢!
recordVector[i].structHolder
是一个空std::vector
。 因此,您无法访问其中的任何项目。
一种解决方案是将Struct_1
push_back
的实例填充到向量
Struct_1 myStruct;
myStruct.Id = 1
recordVector[i].structHolder.push_back(myStruct);
您需要先填充向量,然后才能访问它。您可以使用resize
,例如:
vector<Record> recordVector(10);
int main() {
for (int i = 0; i < recordVector.size(); ++i) {
recordVector[i].structHolder.resize(5);
for (int j = 0; j < recordVector[i].structHolder.size(); j++) {
recordVector[i].structHolder[j].Id = j;
recordVector[i].structHolder[j].Mode = 1;
}
}
}
在此示例中,每个recordVector
在其structHolder
中都有五个Struct_1
,我们用嵌套循环填充它们。
索引到嵌套std::vector
仅访问该向量中的现有元素。它无法添加新的。您还需要初始化数据成员structHolder
,例如
for(int i = 0; i recordVector.size(); ++i){
// as before...
recordVector[i].structHolder.resize(42);
// Now you can access the 42 Struct_1 instances via indexing:
rectorVector[i].structHolder[0].Id = 10;
// ...
}
相关文章:
- 将结构向量排序为子组
- 访问存储在向量C++中的结构的多态成员
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 如何在 c++ 中创建结构向量的映射
- 带unique_ptr的结构向量
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 将 int 映射到 C++ 中的向量结构
- 如何在 c++ 中的向量结构中使用结构向量
- 无法将值存储到向量结构中
- 无法将.CSV文件读取为代表向量结构的类
- MPI,C,派生类型,向量结构
- 向量结构的打印成员
- 在 c++ 中对向量<结构 S> 进行二分搜索?
- 不需要删除向量<结构A*>
- 在C++中循环向量结构<string>
- 将字符串放入字符串的向量结构中
- 共享内存中的向量结构
- 我的向量结构没有像预期的那样迭代