C++ 如何在动态2D数组中存储数据,该数组在C+中的另一个结构也使用的结构中声明+;
我试图调试其他人的代码,但无法将文件中的数据读入头文件中声明的变量。我正在附加.C和.H文件中的代码段 //main.CC++ 如何在动态2D数组中存储数据,该数组在C+中的另一个结构也使用的结构中声明+;,c++,arrays,dynamic,struct,C++,Arrays,Dynamic,Struct,我试图调试其他人的代码,但无法将文件中的数据读入头文件中声明的变量。我正在附加.C和.H文件中的代码段 //main.C #include <cstdio> #include <cstdlib> #include <cmath> #include <fstream> #include <algorithm> #include <iostream> #include <cstring> #include <
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <fstream>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include "test.H"
int main()
{
Initialize();
return(0);
}
要读取的文件
#######################
0.658 1.291
1.891 1.753
#----------------------
2.570 2.955
3.747 3.417
#----------------------
3.658 4.141
5.096 2.800
#######################
5.293 1.842
4.518 1.511
6.215 1.450
#----------------------
6.113 3.239
5.960 3.966
7.033 2.842
#######################
0.658 1.291
1.919 1.720
2.404 2.998
#----------------------
3.674 3.536
4.073 3.004
4.379 4.781
#----------------------
3.915 5.534
3.063 5.270
4.417 6.366
#######################
5.500 5.125
5.850 4.551
#----------------------
5.997 5.958
0.658 1.291
#----------------------
1.899 1.698
2.455 3.008
#----------------------
3.751 3.337
4.562 3.037
#######################
3.962 4.032
2.945 4.456
#----------------------
1.997 4.312
3.125 4.921
#----------------------
5.212 4.220
5.982 3.896
#----------------------
5.386 4.685
0.658 1.291
#----------------------
1.873 1.711
2.481 2.999
#######################
1.556 4.164
#----------
0.658 1.291
#######################
1.891 1.753
#----------------------
0.658 1.291
#----------------------
1.919 1.720
#######################
0.658 1.291
1.841 1.793
1.894 1.773
#######################
0.658 1.291
1.894 1.773
2.486 3.006
#----------------------
3.032 2.690
3.045 1.710
3.546 3.682
#----------------------
3.561 4.989
3.219 5.337
3.915 5.627
#######################
3.995 3.220
3.982 2.227
#---------------------
4.348 3.863
1.467 4.890
#---------------------
1.467 4.890
2.201 4.539
#---------------------
2.842 3.762
2.115 5.051
我知道
sub_objs
定义有问题。但我不知道是什么。为了在公共论坛上发表文章,我不得不稍微修改变量和代码。请记住与此相关的任何错误,并提供帮助 那么这部分做什么呢
struct SUBOBJECTS
{
SUBOBJECTS(int size)
{
coords = new double[size][2]; // [2]
}
double (*coords)[3]; // [3]
};
它声明一个包含3个double的数组,然后发布一个包含2个double的数组。
这可能会导致严重的问题
如果
num
的大小为10,则为20个双人房间分配空间,但为30个双人房间声明空间。在对象
构造函数中,您有以下行:
std::vector<SUBOBJECTS> sub_objs(number,size);
std::向量子对象(数量、大小);
它声明了一个名为sub_objs
的局部变量。一旦析构函数退出,这些变量就会超出范围。它也与OBJECTS::sub_objs
成员变量没有任何关系
因此,您永远不会在任何地方初始化OBJECTS::sub_objs
成员变量,这意味着它的值将是不确定的,以任何方式使用它都将导致未定义的行为和您看到的崩溃
有两种解决方案:
new[]
为其分配内存OBJECTS
构造函数初始值设定项列表中构造它您是否有生成错误(您应该!)?然后请包括完整的生成输出,完整且未经编辑。通过编辑您的问题,将其包含在问题正文中。另外,请学习如何创建一个。此外,无论何时,当你认为你需要一个“动态数组”,你的下一个想法应该是。另外,您是否考虑过在结构中更好地分组值,而不是使用数组向量(或向量向量向量),因此您只使用结构向量(或数组)?这可能会帮助您解决一些问题(甚至可能更符合逻辑)。我已经编辑了代码,现在它可以很好地编译,并在提到的行中复制分段错误。您希望这行代码做什么代码>?谢谢你的关注。我已经编辑了代码,现在它复制了我希望它复制的错误。
#######################
0.658 1.291
1.891 1.753
#----------------------
2.570 2.955
3.747 3.417
#----------------------
3.658 4.141
5.096 2.800
#######################
5.293 1.842
4.518 1.511
6.215 1.450
#----------------------
6.113 3.239
5.960 3.966
7.033 2.842
#######################
0.658 1.291
1.919 1.720
2.404 2.998
#----------------------
3.674 3.536
4.073 3.004
4.379 4.781
#----------------------
3.915 5.534
3.063 5.270
4.417 6.366
#######################
5.500 5.125
5.850 4.551
#----------------------
5.997 5.958
0.658 1.291
#----------------------
1.899 1.698
2.455 3.008
#----------------------
3.751 3.337
4.562 3.037
#######################
3.962 4.032
2.945 4.456
#----------------------
1.997 4.312
3.125 4.921
#----------------------
5.212 4.220
5.982 3.896
#----------------------
5.386 4.685
0.658 1.291
#----------------------
1.873 1.711
2.481 2.999
#######################
1.556 4.164
#----------
0.658 1.291
#######################
1.891 1.753
#----------------------
0.658 1.291
#----------------------
1.919 1.720
#######################
0.658 1.291
1.841 1.793
1.894 1.773
#######################
0.658 1.291
1.894 1.773
2.486 3.006
#----------------------
3.032 2.690
3.045 1.710
3.546 3.682
#----------------------
3.561 4.989
3.219 5.337
3.915 5.627
#######################
3.995 3.220
3.982 2.227
#---------------------
4.348 3.863
1.467 4.890
#---------------------
1.467 4.890
2.201 4.539
#---------------------
2.842 3.762
2.115 5.051
struct SUBOBJECTS
{
SUBOBJECTS(int size)
{
coords = new double[size][2]; // [2]
}
double (*coords)[3]; // [3]
};
std::vector<SUBOBJECTS> sub_objs(number,size);