C语言 SimGrid 中动态数组的动态数组



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

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

我在其中添加了字符串:

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

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

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

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); WRONG! don't do that xbt_dynar_push(dynar_dynar, &dynar); // RIGHT. Use a pointer to dynar

要检索指向的内容,最好使用此接口:http://simgrid.gforge.inria.fr/simgrid/3.14/doc/group__XBT__dynar__speed.htmlSimGrid 源代码中的 Grep 以获取如何使用 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 *);

相关内容

  • 没有找到相关文章

最新更新