gpt4 book ai didi

c - SimGrid 中动态数组的动态数组

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:55 24 4
gpt4 key购买 nike

我通过 simgrid 库创建了一个动态数组:

xbt_dynar_t dynar = xbt_dynar_new(sizeof(char[20]), NULL);

我给它添加了字符串:

char *string = "String";
xbt_dynar_push(dynar, string);

没关系,dynar 包含这些字符串的值。

我想创建一个 dynamic array的动态数组。我使用:

xbt_dynar_t dynar_dynar = xbt_dynar_new(sizeof(xbt_dynar_t), NULL);

然后我将这个 dynar 添加到 dynar_dynar

xbt_dynar_push(dynar_dynar, dynar);
xbt_dynar_push(dynar_dynar, &dynar); // I used this also

如何从 dynar_dynar 中检索值(“字符串”)?所以我想从 dynar_dynar 得到这个 dynar。我使用此代码,但没有帮助。

    xbt_dynar_t temp_dynar = xbt_dynar_new(sizeof(char[20]), NULL);
xbt_dynar_get_cpy(dynar_dynar, 0, temp_dynar); //get the dynar from dynar_dynar and put it to temp_dynar

为什么 temp_dynar 什么都不包含?

UPD我也试过用这个:

xbt_dynar_t temp_dynar = xbt_dynar_get_as(dynar_dynar, 0, temp_dynar);

同样,temp_dynar 不包含任何内容。

最佳答案

底线是 xbt_dynar 现在应该弃用。我们正在努力将所有 SimGrid 源代码转换为 C++ 标准容器。一旦完成,我们将从我们的代码库中删除 dynar。

您必须将字符串的地址而不是字符串本身插入 dynar。稍微滚动下一页以查看完整示例: http://simgrid.gforge.inria.fr/simgrid/3.14/doc/group__XBT__dynar.html特别是,始终使用指向要存储的数据的指针:
//xbt_dynar_push(dynar_dynar, dynar);错误的!不要那样做
xbt_dynar_push(dynar_dynar, &dynar);//正确的。使用指向 dynar 的指针

要获取指向的内容,最好是使用这个接口(interface): http://simgrid.gforge.inria.fr/simgrid/3.14/doc/group__XBT__dynar__speed.html在 SimGrid 源代码中查找有关如何使用 xbt_dynar_get_as() 的示例。

这应该可以解决问题:
xbt_dynar_t dyn = xbt_dynar_get_as(dynar_of_dynars, 0, xbt_dynar_t);
char *str = xbt_dynar_get_as(dyn, 0, char *);

关于c - SimGrid 中动态数组的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37504248/

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