std.array
Source:std/array.d License:
Boost License 1.0. Authors:
Andrei Alexandrescu
- r の内容を持った動的配列を新しくアロケートします。
r としては、入力レンジ、静的配列、動的配列、opApply
を持つクラスや構造体を指定できます。
文字列については特殊ケースとしてオーバーロードされています。
Example:
auto a = array([1, 2, 3, 4, 5][]); assert(a == [ 1, 2, 3, 4, 5 ]);
- 文字列を、完全なランダムアクセス可能な配列に変換して返します。 これは通常のarray関数の特殊ケースとして扱われ、常に dchar[] を返します。 引数のconst性に応じて、const(dchar)[] または immutable(dchar)[] を返すこともあります。
- レンジの基本関数 empty の、組み込み配列用の実装です。
ドット式を使って非メンバ関数をメンバ関数のように呼び出せるという仕様を用いると、
array.empty という式を
empty(array) と同じ意味として使用できます。
Example:
void main() { auto a = [ 1, 2, 3 ]; assert(!a.empty); assert(a[3 .. $].empty); }
- 組み込み配列のための、レンジプリミティブ save
の実装です。第一引数に対するドット表記で非メンバ関数を呼び出せるという言語機能によって、
array.save と書くと
save(array) として実行されます。
Example:
void main() { auto a = [ 1, 2, 3 ]; auto b = a.save; assert(b is a); }
- レンジの基本関数 popFront の、組み込み配列用の実装です。
ドット式を使って非メンバ関数をメンバ関数のように呼び出せるという仕様を用いると、
array.popFront という式を
popFront(array) と同じ意味として使用できます。
Example:
void main() { int[] a = [ 1, 2, 3 ]; a.popFront; assert(a == [ 2, 3 ]); }
- レンジの基本関数 popBack の、組み込み配列用の実装です。
ドット式を使って非メンバ関数をメンバ関数のように呼び出せるという仕様を用いると、
array.popBack という式を
popBack(array) と同じ意味として使用できます。
Example:
void main() { int[] a = [ 1, 2, 3 ]; a.popBack; assert(a == [ 1, 2 ]); }
- レンジの基本関数 front の、組み込み配列用の実装です。
ドット式を使って非メンバ関数をメンバ関数のように呼び出せるという仕様を用いると、
array.front という式を
front(array) と同じ意味として使用できます。
Example:
void main() { int[] a = [ 1, 2, 3 ]; assert(a.front == 1); }
- レンジの基本関数 back の、組み込み配列用の実装です。
ドット式を使って非メンバ関数をメンバ関数のように呼び出せるという仕様を用いると、
array.back という式を
back(array) と同じ意味として使用できます。
Example:
void main() { int[] a = [ 1, 2, 3 ]; assert(a.front == 1); }
- 配列内の位置 pos に stuff を挿入します
- 配列 array の、インデックスm from (inclusive) から to (exclusive) までの要素を stuff で置き換えます。 必要ならば配列の拡大あるいは縮小が行われます。
- 配列にデータを追加する出力レンジの実装です。
この実装は沢山の回数追加をする場合 a ~= data を繰り返すよりも効率的なので、
推奨されます。
Example:
auto app = appender!string(); string b = "abcdefg"; foreach (char c; b) app.put(c); assert(app.data == "abcdefg"); int[] a = [ 1, 2 ]; auto app2 = appender(a); app2.put(3); app2.put([ 4, 5, 6 ]); assert(app2.data == [ 1, 2, 3, 4, 5, 6 ]);
- this(T[] arr);
- 指定された配列へのAppenderを構築します。これはデータをコピーしないことに留意して下さい。 arr.capacity よりも大きい容量を配列が持っている場合、 Appenderによって使用されます。 Appenderを配列で初期化した後にオリジナルの配列へ追加をすると、再割り当てが発生します。
- 追加のために最低でも newCapacity の容量を確保します。 要求以上の数の要素が追加可能になることもあります。 newCapacity < capacity の時は、 何も行われません。
- 配列の容量 (メモリの再割り当てなしでデータ追加できる最大サイズ)を返します。 どんな追加でも再割り当てが発生する状況では 0 を返します。
- 管理している配列を返します。
- 管理している配列にデータを1つ追加します。
- 管理配列を指定した長さに縮めます。 現在の長さより長い値を指定すると例外が飛びます。
- 管理している配列をクリアします。
- 配列をその場で更新するAppenderです。全ての呼び出しが内部のAppender実装に転送され、
また同時に、渡されたオリジナルの配列のポインタを書き換えます。
- this(T[]* arr);
- 指定の配列への参照をもとにRefAppenderを構築します。これはデータをコピーしません。 arr.capacity よりも大きい容量を配列が持っている場合、 Appenderによって使用されます。RefAppender は arr が null でないことを仮定しています。 注意点として、Appenderによる追加が終わるまでは、元配列への通常の追加 (たとえば ~=) は行わないで下さい。 Appenderからの追加がそれを上書きしてしまいます。
- 配列の容量を返します (再割り当てが発生するまでに追加できる最大要素数です)。 どんな追加でも再割り当てが発生する状況では 0 を返します。
- 管理している配列を返します。
- array で初期化した Appender!(A) オブジェクトを返す便利関数です。
- array で初期化した RefAppender!(A) オブジェクトを返す便利関数です。 配列ポインタに null を指定することはできません。代わりに他のバージョンの appender を使用して下さい。