是否可以計算數組中引用標量的索引?計算數組元素引用的索引
在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