是否可以计算数组中引用标量的索引?计算数组元素引用的索引
在C中,您可以使用指针算术来检索索引。
SomeType array[500];
const SomeType* e = &array[42];
// [...]
size_t index = e-array;
在Perl中有一些类似的方法吗?
my @array = (1,2,3,4,5,6,7,8,9,0);
my $e = \$array[4];
# [...]
my $index = '???';
原因是:
予具有相对大的(> 6Mio条目)阵列与相同结构几何相关的数据。
我也有某种基于优先级的队列,它包含对这个数组的引用。在处理这个队列时,新的元素被添加并且必须使用队列。由于这个队列也会变得相当大。和元素的优先级改变,并从数组元素及其邻居派生,我想避免队列中的复杂条目(内存大小和分配性能),并只有他们的参考他们直接访问数组中的信息。
但似乎在任务列表中使用索引将是最好的选择。
这听起来像一个XY问题。你能否更详细地解释你到底想要做什么?通常将C“直接翻译”为Perl是一个糟糕的主意。 – ThisSuitIsBlackNot
@ThisSuitIsBlack不是直接翻译,但我认为这将有助于描述我想要的。解决我的问题的一个可能性是保持(索引,值) - 对象,但我认为使用引用会更好,因为列表,这将保持这个对象将经常修改(插入,排序,删除)和将增长得相当大,以及源'阵列' –
这里的问题是*为什么*你需要这样做。将数组中的某些内容分配给单独的标量后,为什么需要知道索引?如果你试图做这样的事情,你可能需要一个散列。同样,你需要澄清需要做你想做什么的目的。 – stevieb