如何在C++中访问数组结构内部的数组结构
How to Access an array Struct Inside an array Struct in C++?
我正在尝试访问Reservation结构的变量名称,如此hotel[SomeIndex].breservations[AanotherIndex].name,但它不起作用。
如何访问这些变量来填充结构?
PS:它可以编译,但在调试器中显示"分段故障"。
struct Reservation{
string name;
};
struct Hotel {
string name;
Reservation *reservations;
};
int main()
{
struct Hotel *hotel;
hotel = new Hotel[20];
hotel->reservations=new Reservation[10];
hotel[9].name="Olympus Plaza";
hotel[9].reservations[5].name="John Doe";
cout<<"Hotel: "<<hotel[9].name<<" Name: "<<hotel[9].reservations[5].name<<endl;
return 0;
}
您没有正确初始化保留。使用原始指针正确地执行此操作既困难又容易出错,在C++中绝对不建议这样做。
首先,使用std::vector<Hotel>
而不是原始数组Hotel *
。向量是普通的C++"数组"对象。
然后,您也可以用std::vector<Reservation>
替换Hotel
结构中的原始Reservation *
指针。
这样可以更容易地修复实际错误:缺少初始化。
您创建了20家酒店,然后为第一家酒店创建了10个预订!然后你尝试访问第九家酒店的预订,那里有一个未初始化的指针,指向随机数据。这意味着行为是未定义的:在这种情况下,分段故障是指您的系统向您显示您正在访问不属于您的数据的方式。
您需要一个为每个酒店创建预订的循环,或者如果您只想在第9家酒店创建预订,则需要指定其索引。
使用std::vector
非常简单:
#include <vector>
struct Reservation {
string name;
};
struct Hotel {
string name;
vector<Reservation> reservations;
// if you have no "using namespace std", then it's "std::vector".
};
然后你可以创建正确酒店的预订:
int main()
{
vector<Hotel> hotel(20);
hotel[9].reservations.resize(10);
hotel[9].name="Olympus Plaza";
hotel[9].reservations[5].name="John Doe";
cout<<"Hotel: "<<hotel[9].name<<" Name: "<<hotel[9].reservations[5].name<<endl;
return 0;
}
hotel->reservations=new Reservation[10];
等价于hotel[0].reservations=new Reservation[10];
。您已经初始化了hotel[0]
,但没有初始化hotel
的其他元素,特别是hotel[9]
。
看起来您需要的是为Hotel
和Reservation
定义构造函数,将它们的所有成员初始化为定义良好的值。
我强烈建议您使用std::vector
,而不是原始数组;数组是一种高级功能,很容易出错。
- 从函数中全局删除并重新实例化数组结构,而无需在编译时知道数组的大小
- 如何使用函数的输出初始化 const 数组结构字段?
- 传递数组结构、ofstream 和 interger 以运行
- 从文本文件中读取并输入到数组结构中,然后显示读取的数据C++
- 将文本文件读取到数组结构中
- C/C++中数组结构和数组结构的通用接口
- C++ MDC final-在字符类型的数组结构中按字母顺序对记录中的名称进行排序
- C++ 使用数组结构创建平衡的二叉搜索树
- C++:释放动态数组(结构成员)和指向此结构的指针的方法
- 使用 vector 在 c++ 中声明 3D 数组结构
- 数组结构无法正确打印
- 如何在C++中访问数组结构内部的数组结构
- CIN进入数组结构似乎什么也没输入
- ifstream将数组结构到txt文件中,然后尽可能将其提取为数组
- wlanapi-将WlanFreeMemory释放其WLAN_INTERFACE_INFO数组结构
- 显示数组结构 c++
- C++ 使用函数访问数组结构的方法是什么?
- 将庞大的数组结构复制到 GPU
- 如何封送包含字符矩阵的数组结构
- C++多维数组结构的对齐