2014-12-19 23 views
6

Ben bitişik (özellikle Git) depolanan dizi veriler hakkında büyük bir anlaşmaya yakın zamanda bir blog okuyordu, ama tanım gereği, dizi verinin bitişik saklanır benim anlayış oldu. En azından bu, tüm algoritmaların ve veri yapılarımın çalışmasının bana inanmasına neden oldu.Diziler her dilde bitişik olarak saklanıyor mu?

Benim soru, dizi verilerinin tümü programlama dilinde bitişik saklanır mı? Ve özellikle, tamsayılar gibi (örneğin, bir dizi Nesneye sahip olabildiğim Java'nın durumunda, bellekteki bitişik olarak saklanan nesnelerin referansları mıdır?) Gibi ilkel maddeler hakkında konuşmak istiyorum. Nesnelerin kendilerinin her yerde olabileceğini biliyorum. Bu konuda herhangi bir açık gereklilik yoktur bu yüzden

+0

java için zaten bir cevap var https://stackoverflow.com/questions/10224888/java-are-1-d-arrays-always-contiguous-in-memory – DRC

+0

Java için dizi elemanlarının saklanacağı bir kural yoktur Belirtilen davranışlar meydana geldiği sürece, bitişik veya belirli bir düzende. C dilleri genellikle tek boyutlu diziler için bitişik sıraya gereksinim duyar, böylece işaretçi semantiği sağlanır. Diziler için "ArrayList" tipi bir mekanizma kullanan birçok dil vardır ve diziler çoklu bitişik olmayan bloklardan oluşturulabilir. –

+2

Birçok dil belirtimi, bu uygulamanın uygulama ayrıntısı (bellek nedir?) Olduğunu ve bunu garanti etmediğini düşünür, ancak bu genellikle gerçek uygulamalarda geçerlidir. – zch

cevap

0

genellikle bu dil soyutlama düzeyinin altındadır. ancak herhangi bir gerçek yaşam uygulaması muhtemelen performans nedeniyle (kelime büyüklüğüne yuvarlayarak) yapar. çünkü çekirdek, programın kendisinin bitişik bitişik alanı sağlayabildiğinden, çekirdek, bitişik

3

olarak görür. Bir dizide "dizi" olarak tanımladığınız şeye bağlıdır. bitişik eleman yerleştirme ile yapmak. JavaScript Mesela

, diziler, veri, bitişik olarak depolanır, ancak farklı noktasında değerleri depolamak için (bir karma işlev kullanılarak) indeksleme şifreler göre Hash ( here sorgulandığı, yani aslında karma tablolarda bulunmaktadır), ve bu sadece bir örnektir (aslında, dinamik dillerinde, karma tablo olarak dizilere sahip olacağının yaygın bir fenomeni olduğunu düşünüyorum).

Bu sorunun numaralı numaralı telefon numarasıyla yanıtlandığını varsayalım.