是否可以标记数组中的单元格?
Is it possible to label cells in arrays?
是否可以为数组中的单元格分配标签?我只是在试验数组,我很好奇你是否可以用描述符标记不同的单元格。下面是我希望实现的那种事情的图表 -
数组始终使用整数索引进行索引。
如果行和列的含义是常量并且在 compile-time 处已知,则可以使用具有所需名称和索引值的整数常量,例如,
integer, parameter :: Plant1 = 1, Plant2 = 2,...
integer, parameter :: Day1 = 1, Day2 = 2,...
Array(Plant2, Day2) = 92
如果这不是常量,并且每次您 运行 针对不同数据的程序都可能不同,那么您当然可以有一个标签数组
character(label_len), allocatable :: rows(:)
rows = [character(label_len) :: "Plant 1", "Plant 2",...]
但您不能将其用于索引。要找出哪个整数索引对应于“Plant 2”,您必须搜索数组。这可能很慢。
有一个名为dictionary that is used to retrieve such data assigned to character string labels more efficiently (still it takes some time). There are some Fortran implementations at https://fortranwiki.org/fortran/show/Hash+tables and hopefully one will also be developed for stdlib的数据结构。
是否可以为数组中的单元格分配标签?我只是在试验数组,我很好奇你是否可以用描述符标记不同的单元格。下面是我希望实现的那种事情的图表 -
数组始终使用整数索引进行索引。
如果行和列的含义是常量并且在 compile-time 处已知,则可以使用具有所需名称和索引值的整数常量,例如,
integer, parameter :: Plant1 = 1, Plant2 = 2,...
integer, parameter :: Day1 = 1, Day2 = 2,...
Array(Plant2, Day2) = 92
如果这不是常量,并且每次您 运行 针对不同数据的程序都可能不同,那么您当然可以有一个标签数组
character(label_len), allocatable :: rows(:)
rows = [character(label_len) :: "Plant 1", "Plant 2",...]
但您不能将其用于索引。要找出哪个整数索引对应于“Plant 2”,您必须搜索数组。这可能很慢。
有一个名为dictionary that is used to retrieve such data assigned to character string labels more efficiently (still it takes some time). There are some Fortran implementations at https://fortranwiki.org/fortran/show/Hash+tables and hopefully one will also be developed for stdlib的数据结构。