配列
Array
シーケンス(Sequence)と呼ばれることもある。
要素が一列にならんだもの。(1次元配列) 番号でアクセスできる。
ほとんどの場合、言語の一級オブジェクト(直接サポートされている型)になっている。
言語によって、固定長のものと可変長のものとがある。
データ構造としてスカラーの次に最も原始的。
位置指定でのアクセスは$ \Omicron(1)
ランダムデータの検索は$ \Omicron(n)
ソート済みデータの検索は$ \Omicron(\log n)
添え字を複数使いたい場合
多次元配列
配列状に扱えるものを集める
C言語/C++
型の宣言時に配列型を宣言すれば使える。
配列の範囲外にアクセスできてしまう。(添え字の範囲チェックがされない)
静的に割り当て。固定長になる。
code:static.c
int i;
int a5 = {0, 1, 2, 3, 4}; // 初期化
for (i = 0; i < 5; i++) {
printf("%d\n", ai);
}
動的に割り当てたメモリに配列をマップする場合は普通はポインタを使う。
calloc を使うとバイト配列を0で初期化されたメモリになる。(実装によっては、これは不正な初期化である事に注意)
code:dynamic.c
int i;
int *a = calloc(5, sizeof(int)); // malloc(sizeof(int) * 5)
for (i = 0; i < 5; i++) {
ai = i;
}
free(a);
JavaScript
Array https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array
[]で作ることができる配列が標準の配列
どんな型でも入ってしまう。
配列状のデータ
TypedArray https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
Int8Array
Int16Array
Int32Array
BigInt64Array
Uint8Array
Uint8ClampedArray
Uint16Array
Uint32Array
BigUint64Array
Float32Array
Float64Array
ArrayBuffer https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
(String) https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String
文字列は UTF-16 のデータ列。
(Blob) (Web API) https://developer.mozilla.org/ja/docs/Web/API/Blob
中を見ることができない。データの塊として取り扱われる。切り出しはできる。
Buffer (Node.js) https://nodejs.org/api/buffer.html
Python
https://docs.python.org/ja/3/reference/datamodel.html#objects-values-and-types
シーケンス型
文字列型
タプル型
bytes
リスト型
バイト配列
Rust
配列とスライス
https://doc.rust-jp.rs/rust-by-example-ja/primitives/array.html
https://doc.rust-lang.org/std/primitive.array.html
std::Vec ベクタ型
https://doc.rust-jp.rs/rust-by-example-ja/std/vec.html
https://doc.rust-lang.org/std/vec/struct.Vec.html
配列の判定
配列の結合
配列のコピー
#データ構造 #コレクション