c初始化结构的数组
我有两个结构,路径和路径。然后,定义一个路径数组以保存我的数据:c初始化结构的数组,c,struct,C,Struct,我有两个结构,路径和路径。然后,定义一个路径数组以保存我的数据: enum MAX_NEIGHBOR {MAX_NEIGHBOR = 256}; enum MAX_NUM_PATHS {MAX_NUM_PATHS = 100}; typedef struct { int id; int path[MAX_NEIGHBOR]; } path; typedef struct { int id; path pathsIKnow[MAX_NUM_PATHS]; } p
enum MAX_NEIGHBOR {MAX_NEIGHBOR = 256};
enum MAX_NUM_PATHS {MAX_NUM_PATHS = 100};
typedef struct {
int id;
int path[MAX_NEIGHBOR];
} path;
typedef struct {
int id;
path pathsIKnow[MAX_NUM_PATHS];
} paths;
paths pathsIKnow[MAX_NEIGHBOR];
我目前正在运行时在一个大循环中初始化数组,这花费了太多的时间。有没有一种方法可以不用循环就初始化它,比如在定义paths数组时
当前循环代码:
void initKnownPaths() {
for(int j=0;j<MAX_NEIGHBOR;j++){
paths pathsToI = pathsIKnow[j];
pathsToI.id = 999;
for(int i=0 ;i < MAX_NUM_PATHS;i ++){
path pathToupdate = pathsToI.pathsIKnow[i];
pathToupdate.id = 999;
for(int j=0 ;j < MAX_NEIGHBOR;j++){
int cPathValue = pathToupdate.path[j];
cPathValue = 999;
pathToupdate.path[j] = cPathValue;
}
pathsToI.pathsIKnow[i] = pathToupdate;
pathsIKnow[j] = pathsToI;
}
}
}
谢谢 如果使用GCC进行编译,则可以使用以下方法代替initKnownPaths函数替换struct path类型的结构变量pathsIKnow: 如果您没有使用GCC,那么您应该根据建议改进现有功能 注意:如果使用第一种方法,编译的二进制文件大小将增加,但这将减少运行时间。时空权衡 参考资料:
您的init函数正在复制周围的大量数据,并且正在做大量被丢弃的工作。你应该先把它清理干净。另外,有两个不同的变量命名为j只是自找麻烦。
paths pathsIKnow[MAX_NEIGHBOR] =
{
[0 ... MAX_NEIGHBOR - 1] =
{
999,
{
[0 ... MAX_NUM_PATHS - 1] =
{
999,
{
[0 ... MAX_NEIGHBOR - 1] = 999}}}}};