SetLength和多维动态数组

问题描述

我必须使用Tpoint数组的数组。我不知道任何初始尺寸,因为用户将能够创建n组Point,每个Point具有可变尺寸。

它涉及处理图形,每个初始图形都有四个顶点,可以对其进行建模,添加删除顶点。

我定义类型

gfortran -std=f2008 -fall-intrinsics -ffree-line-length-none -Wall -Wextra -Wpedantic -Wno-target-lifetime -Wno-compare-reals -Jbuild.gnu.debug -g -Og -fcheck=bounds,do,mem,pointer,recursion -Isrc -Itests  -DUSE_PCRE tests/tests.F90 build.gnu.debug/*.o -lpcreposix -lpcre -o build.gnu.debug/tests

创建新图形时,我将初始化数组

type
Tnode = array of array of TPoint;
...
Fnode: Tnode;

然后我通过添加删除顶点,每次设置新尺寸来修改图形

SetLength(Fnode,index,5);

一切正常,但是当我使用SetLength(fnode[index-1],nVertices); 创建一个新的起始图形时,先前的数组也再次初始化为5,并且显然删除了所有添加的顶点。

此刻,我解决了以下问题:在创建新图形之前复制数组,并在调用SetLength之后还原它们,但这似乎是一种不好的做法。

您有什么建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)