繁体   English   中英

从NSArray初始化结构?

[英]Initialize struct from NSArray?

我正在尝试在我构建的应用程序中实现KD树,当前示例如下所示:

struct kd_node_t {
    int trapID;
    double x[MAX_DIM];
    struct kd_node_t *left, *right;
};

struct kd_node_t wp[] =
    {
        {1, {2, 3}}, {1, {5, 4}}, {1, {9, 6}}, {1, {4, 7}}, {1, {8, 1}}, {1, {7, 2}}
    };

我想做的是动态地将数组放入结构中,而不是像示例中那样很少。 有什么想法我该怎么做?

编辑:

我意识到问题应该有所不同->如何从NSArray数据初始化此特定结构?

您可以:

struct kd_node_t {
    NSArray *myArray
};

kd_node_t myStruct;
myStruct.myArray = [newArray retain];

它应该工作。

如果使用的是ARC,则使用NSArray *字段定义structNSArray * ,但如果准备使用__unsafe_unretained引用,则可以完成。

从您的问题尚不清楚您是否出于某种原因需要使用struct 如果这样做是为了获得“轻量级”结构,则可以使用无方法类:

@interface KD_Node : NSObject
{
   int trapID;
   NSArray *x;
   KD_Node *left, *right;
}
@end

@implementation KD_Node
@end

除分配外,对malloc() (或朋友)的调用被[KD_Node new]替换,使用KD_Node *就像使用struct kd_node_t * -字段(实例变量)是使用->运算符引用的。 与普通struct相比,存储开销很小,但是您可以正常使用NSArray * (当然,如果您愿意,也可以稍后添加属性和/或方法。)

HTH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM