这是我的工作,但不是家庭工作。我正在尝试决定如何最好地使用本机数据结构来表示我拥有的数据(本机我的意思是我不能在 C++ 中使用 STL,它是 C++ 代码。它是我们的设计决定不使用 STL 并且没有办法改变它或违反它)
数据如下:
有一个变量 say int 来表示 ipaddr 比如说 192.168.10.77(假设它存储在一个从 192.168.10.77 唯一获得的 int 中),它可以调用 deviceId。
现在,对于每个这样的 deviceId,还有其他字段与多个服务相关联,例如服务 1、服务 2 等... 与每个设备关联的服务数量从一个 deviceId 到另一个是可变的。
因此,数据样本可能如下所示:
192.168.10.77
service1
service2
service3
service4
192.168.10.98
service1
service2
192.168.10.97
service1
现在我将它存储在一个低效的数据结构中,如下所示。
我有一个结构:
typedef struct
{
deviceId d;
serviceId s;
}mystr;
然后我使用一个结构数组,它包含
mystr mylist[64];
所以这个数组的条目看起来像
mylist[0].d = 192.168.10.77
mylist[0].s = service1
mylist[1].d = 192.168.10.77
mylist[1].s = service2
mylist[2].d = 192.168.10.77
mylist[2].s = service3
mylist[3].d = 192.168.10.77
mylist[3].s = service4
mylist[4].d = 192.168.10.98
mylist[4].s = service1
mylist[5].d = 192.168.10.98
mylist[5].s = service2
... ... and so on ....
本质上,deviceId 值的重复次数与与其关联的服务一样多。
我需要一些更高效的东西,因为稍后我必须对与设备关联的所有服务进行分组。
所以要做到这一点,我可能必须搜索 deviceId 并将其服务组合在一起。我不知道如何按 deviceId 进行搜索,因为它可以具有任何值。
使用一些最佳数据结构来表示这些数据的更好方法是什么?
[我可以将其视为链表,但无法提出struct Node{ }
它]