配列
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++) {
}
動的に割り当てたメモリに配列をマップする場合は普通はポインタを使う。
calloc を使うとバイト配列を0で初期化されたメモリになる。(実装によっては、これは不正な初期化である事に注意)
code:dynamic.c
int i;
int *a = calloc(5, sizeof(int)); // malloc(sizeof(int) * 5)
for (i = 0; i < 5; i++) {
}
free(a);
JavaScript
[]で作ることができる配列が標準の配列
どんな型でも入ってしまう。
配列状のデータ
Int8Array
Int16Array
Int32Array
BigInt64Array
Uint8Array
Uint8ClampedArray
Uint16Array
Uint32Array
BigUint64Array
Float32Array
Float64Array
文字列は UTF-16 のデータ列。
中を見ることができない。データの塊として取り扱われる。切り出しはできる。
Python
シーケンス型
文字列型
タプル型
bytes
リスト型
バイト配列
Rust
配列とスライス
std::Vec ベクタ型