异质的数据结构

Posted louisekou666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异质的数据结构相关的知识,希望对你有一定的参考价值。

一. 结构(struct)

struct声明创建一个数据类型,可能将不同类型的对象聚合到一个对象中。

编译器维护关于每个结构类型的信息,指示每个字段的字节偏移。利用这些偏移作为内存引用指令中的位移,从而产生对结构元素的引用。

结构的各个字段的选取完全是编译时处理的,机器代码不包含关于字段声明或含字段名字的信息

结构可以嵌套结构,就像数组可以嵌套在结构中,数组可以嵌套在数组中。

struct prob{
    int *p;
    struct{
        int x;
        int y;
    }s;
    struct prob *next;
}

字段偏移量:p:0  s.x:8  s.y:12  next:16

 

二. 联合(union)

用不同的字段来引用相同的内存块,以多种类型来引用同一个对象

与Union语法相同,但语义完全不同

应用:事先知道对一个数据结构中的两个不同字段的使用是互斥的,便可以将这两个字段声明为联合的一部分。

例如:

实现一个二叉树的数据结构,满足:

每个叶子节点都有两个double类型的数据值

每个内部节点都有指向两个孩子节点的指针,但没有数据

可以按如下方式声明一个节点

union node_u{
    struct{
        union node_u *left;
        union node_u *right;
    } internal;
    double data[2];
}; // 16bytes

缺点:没有办法确定给定节点是叶子结点还是节点

改进:

引入枚举类型,定义联合中的不同选择,然后再创建一个结构,包含一个标签字段和这个联合

typedef num{N_LEAF, N_INTERNAL} nodetype_t;
struct node_t{
    nodetype_t type;
    union{
        struct{
            struct node_t* left;
            struct node_t* right;
        }internal;
        double data[2];
    }info;
}; // 24bytes

对于字段较少的代码,如上例中只有2个字段,相对于给代码造成的复杂性,使用联合带来的节省是很少的。

对于有较多字段的数据结构,联合带来的节省会更吸引人。

注意:字节顺序问题

 

三. 数据对齐

对齐原则:任何K字节的基本对象的地址必须是K的倍数

假设一个处理器总是从内存中取8个字节,那地址必须为8的倍数

好处:简化处理器和内存之间接口的硬件设计,提高内存系统的性能

确保每种数据类型按照指定方式来组织和分配,每种数据类型的对象都满足。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

以上是关于异质的数据结构的主要内容,如果未能解决你的问题,请参考以下文章

异质树的实现——代码+实验报告

第三周.03.异质图应用

CIKM 2022 AnalytiCup Competition: 联邦异质任务学习

CIKM 2022 AnalytiCup Competition: 联邦异质任务学习

解读作者纪厚业北京邮电大学博士生主要关注异质图神经网络及其应用

工业企业异质性——僵尸和股权