gpt4 book ai didi

c - 可以使用什么数据结构来替代 4 维数组

转载 作者:行者123 更新时间:2023-11-30 16:25:18 25 4
gpt4 key购买 nike

目前在我的测试框架中,为了跟踪测试结果,我正在维护 4D 数组:TestResult[domain][client][testno][resourceno]

测试用例基本上有3个循环

    For each domain(0-2)  
For each client(0-8)
For each resource(0-8)
Execute test1
Store TestResult
Execute test2
Store TestResult

除了 4D 数组之外,是否有更好的数据结构可以在 C 中用于此目的?

最佳答案

好吧,让我们走向相反的极端:

typedef struct
{
// whatever you need...
} Resource;

typedef struct
{
Resource a;
Resource b;
// ...
Resource g;
} Client;

typedef struct
{
Client a;
Client b;
// ...
Client g;
} Domain;

好吧,我跳过了 Test 结构和包含所有域的结构,这个想法应该仍然很清晰......

void processResource(Resource* resource)
{ /* ... */ }

void processClient(Client* c)
{
processResource(&c->a);
// ...
processResource(&c->g);
}

void processDomain(Domain* d)
{
processClient(&d->a);
// ...
processClient(&d->g);
}

正如已经提到的:这是另一个极端。您可以在结构中维护数组,以便可以迭代为:

void processDomain(Domain* d)
{
for(size_t i = 0; i < sizeof(d->clients)/sizeof(*d->clients); ++i)
{
processResource(d->clients + i);
}
}

或者在某些结构中有一些较低的 n 维数组。任何组合都可以达到目的,一切都取决于您,无论您认为最合适...

您甚至可以扩展到动态数组:

typedef struct
{
Resource* resources;
size_t count;
} Client;

如果您认为管理可变数量的子元素很有用。

如果这一切都比原始 4D 数组“更好”?我想说,这主要是一个品味问题,除非可能有更好的可重用性,尤其是较低的嵌套结构,但当前的用例对于真正应用于此处的情况来说似乎过于具体。

关于c - 可以使用什么数据结构来替代 4 维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53436329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com