答えて
本質的に、コンピュータメモリは、一連のアドレス指定されたスロットとして説明することができます。配列を作成するには、それらの連続したブロックを確保します。したがって、アレイに50個のスロットが必要な場合は、メモリから50個のスロットを確保します。この例では、Aという配列の1019から1068までのスロットを脇に置いておきましょう。Aのスロット0はメモリのスロット1019です。 Aのスロット1は、メモリ内のスロット1020である。 Aのスロット2はメモリ内のスロット1021であり、以下同様である。ですから、一般に配列のn番目のスロットを取得するには、1019 + nを実行します。だから私たちがする必要があるのは、開始スロットが何であるかを覚えて、それに適切に追加することだけです。
私たちが配列の終わりを超えてメモリに書き込まないようにしたい場合は、Aの長さを格納し、それに対してnをチェックすることもできます。また、追跡したい値がすべて同じサイズであるわけではないので、配列内の各項目が複数のスロットを占める配列を持つこともあります。その場合、sが各アイテムのサイズであれば、配列内のアイテムの数をs倍に設定する必要があり、n番目のアイテムをフェッチするときは、nよりもむしろ開始時刻にs時間nを追加する必要があります。しかし実際には、これは扱いが非常に簡単です。唯一の制約は、配列内の各アイテムが同じサイズであることです。
これをコミュニティウィキ、その一般的な情報にすることを検討してください。 – Jon
アレイは、いくつかの既知のアドレスから始まるメモリの単なる連続チャンクです。開始アドレスがp
あり、そしてあなたがi
番目の要素にアクセスしたいのであれば、あなたは、単に計算する必要があります。
size
p + i * size
は、各要素のサイズ(バイト単位)です。
厳密に言うと、任意のメモリアドレスへのアクセスには一定の時間がかかります。
ウィキペディアは非常によく、これを説明する:
http://en.wikipedia.org/wiki/Array_data_structure
基本的には、メモリベースが選択されています。次に、索引がベースに追加されます。そうのような:
base = 2000, size-of-each = 5 bytes
array[i][j] is at 2000 + 5*i*j
を、すべてのインデックスが異なるサイズである場合、より多くの計算が必要である:
if base = 2000 and the size of each element is 5 bytes, then:
array[5] is at 2000 + 5*5.
array[i] is at 2000 + 5*i.
二次元配列はそうのように、この効果を乗算
for each index
slot-in-memory += size-of-element-at-index
したがって、この場合、繰り返しなしで直接マップすることはほとんど不可能です。
- 1. 低レベルの一般的なbsdソケットより低い
- 2. クロスプラットフォームのモバイルC++ SDKはどのようにして一般的にどのように動作しますか?
- 3. どのように低レベルのネットワークプログラミングを_できますか?
- 4. 一般的なストライドでアレイを分割しますか?
- 5. このGroovy JSONオブジェクトに一般的にどのようにアクセスしますか?
- 6. 低レベルのOS APIはどのように機能しますか?
- 7. 一般的な匿名メソッドはどのように記述できますか?
- 8. マゼンタ支払手続き一般的にどのように動作するのですか
- 9. Javascriptは一般的に動作しません
- 10. 一般的な解決策は、私は次のようにJSONオブジェクトを作成する必要がアレイ
- 11. はどのように一般的なものから非ジェネリックメソッドを呼び出すためにどのように一般的なもの
- 12. どのように他の一般的なクラスから
- 13. アセンブリへのC/C++変換、低レベルのメモリ動作:どのように行われますか?
- 14. 一般的な行を動的に更新しますか?
- 15. どのようにカフカの低レベルのプロセッサのAPIで、MS
- 16. 一般的なWebブラウザのアドレスバーの動作は何ですか?
- 17. がどのように機能インタフェースは、一般的な方法
- 18. htaccessを:どのように一般的な方法で
- 19. これはiPadデバイスの一般的な動作ですか?
- 20. Span <T>によってどのような一般的な操作を効率化できますか?
- 21. Meteorはどのように動作しますか?クライアントとサーバーはどのように動作しますか?
- 22. jQuery:一般的なキーボード入力をどのように聞きますか?
- 23. (一般的に)カスタムデータ型からパーサーを作成しますか?
- 24. 一般的な制約が期待どおりに動作しません
- 25. 一般的なアプリケーションコントローラの動作
- 26. ログインシステムは一般にOOPとどのように連携しますか?
- 27. StringクラスはJavaでどのように内部的に動作しますか?
- 28. サービスはどのようにAndroidで内部的に動作しますか?
- 29. Laravel 5、アップロード用の一般的なモデルハンドラを作成するにはどうすればよいですか?
- 30. 列挙RTTIフィールドの一般的なTValueを作成するにはどうすればよいですか?
各要素が 'n 'バイトの場合、' ith'要素は 'start +(n * i)'に配置されます。 –
大学レベルのデータ構造とアルゴリズムのテキストブックは、すべてのcomp sciの基礎(配列、リンクリストなど)について説明します。誰もMattのための良い、低コストの提案を持っていますか? – Aardvark
@Aardvark Wikipedia。それはすべてを持っています – Jon