我正在实施 PSO 算法。我使用这个数据结构:
typedef struct {
float x;
float y;
} C_struct_Class2D;
typedef struct {
C_struct_Class2D *pos;
C_struct_Class2D *best_pos;
C_struct_Class2D *vel;
} C_struct_Particle;
typedef struct { <br>
C_struct_Particle **particles;
C_struct_Particle *g;
} C_struct_Swarm;
我必须使用 C,而不是 C++。这就是为什么我在类中使用结构。
结构说明:
有一个 Swarm(C_struct_Swarm),它由几个 Particles(**particles) 和一个最佳 Particles(*g) 组成。每个粒子都有一个“C_struct_Class2D”类型的位置、最佳位置和速度。
在一些方法中,我为每个数据分配内存空间并对其进行初始化。但我喜欢整个数据结构在内存中是连续的。这样所有的结构都在地址空间中彼此落后。
内存应如下所示:
C_struct_Swarm 粒子[0] 粒子[0]->pos 粒子[0]->best_pos 粒子[0]->vel 粒子[1] 粒子[1]->pos 粒子[1]->best_pos 粒子[1]->vel ... ... ... ... 粒子[n] 粒子[n]->pos 粒子[n]->best_pos 粒子[n]->vel g->位置 g->best_pos g->vel
我怎样才能做到这一点?
问候 sw