D 2.0
About Japanese Translation

Last update Thu Oct 28 17:54:29 2010

std.array

Source:
std/array.d

License:
Boost License 1.0.

Authors:
Andrei Alexandrescu

ForeachType!(Range)[] array(Range)(Range r);
r の内容を持った動的配列を新しくアロケートします。 r としては、入力レンジ、静的配列、動的配列、opApply を持つクラスや構造体を指定できます。 文字列については特殊ケースとしてオーバーロードされています。

Example:
auto a = array([1, 2, 3, 4, 5][]);
assert(a == [ 1, 2, 3, 4, 5 ]);

ElementType!(String)[] array(String)(String str);
文字列を、完全なランダムアクセス可能な配列に変換して返します。 これは通常のarray関数の特殊ケースとして扱われ、常に dchar[] を返します。 引数のconst性に応じて、const(dchar)[] または immutable(dchar)[] を返すこともあります。

bool empty(T)(in T[] a);
レンジの基本関数 empty の、組み込み配列用の実装です。 ドット式を使って非メンバ関数をメンバ関数のように呼び出せるという仕様を用いると、 array.empty という式を empty(array) と同じ意味として使用できます。

Example:
void main()
{
    auto a = [ 1, 2, 3 ];
    assert(!a.empty);
    assert(a[3 .. $].empty);
}

T[] save(T)(T[] a);
組み込み配列のための、レンジプリミティブ save の実装です。第一引数に対するドット表記で非メンバ関数を呼び出せるという言語機能によって、 array.save と書くと save(array) として実行されます。

Example:
void main()
{
    auto a = [ 1, 2, 3 ];
    auto b = a.save;
    assert(b is a);
}

void popFront(A)(ref A a);
レンジの基本関数 popFront の、組み込み配列用の実装です。 ドット式を使って非メンバ関数をメンバ関数のように呼び出せるという仕様を用いると、 array.popFront という式を popFront(array) と同じ意味として使用できます。

Example:
void main()
{
    int[] a = [ 1, 2, 3 ];
    a.popFront;
    assert(a == [ 2, 3 ]);
}

void popBack(A)(ref A a);
レンジの基本関数 popBack の、組み込み配列用の実装です。 ドット式を使って非メンバ関数をメンバ関数のように呼び出せるという仕様を用いると、 array.popBack という式を popBack(array) と同じ意味として使用できます。

Example:
void main()
{
    int[] a = [ 1, 2, 3 ];
    a.popBack;
    assert(a == [ 1, 2 ]);
}

typeof(A[0]) front(A)(A a);
void front(T)(T[] a, T v);
レンジの基本関数 front の、組み込み配列用の実装です。 ドット式を使って非メンバ関数をメンバ関数のように呼び出せるという仕様を用いると、 array.front という式を front(array) と同じ意味として使用できます。

Example:
void main()
{
    int[] a = [ 1, 2, 3 ];
    assert(a.front == 1);
}

typeof(A.init[0]) back(A)(A a);
レンジの基本関数 back の、組み込み配列用の実装です。 ドット式を使って非メンバ関数をメンバ関数のように呼び出せるという仕様を用いると、 array.back という式を back(array) と同じ意味として使用できます。

Example:
void main()
{
    int[] a = [ 1, 2, 3 ];
    assert(a.front == 1);
}

void insert(T, Range)(ref T[] array, size_t pos, Range stuff);
配列内の位置 posstuff を挿入します

void replace(T, Range)(ref T[] array, size_t from, size_t to, Range stuff);
配列 array の、インデックスm from (inclusive) から to (exclusive) までの要素を stuff で置き換えます。 必要ならば配列の拡大あるいは縮小が行われます。

struct Appender(A : T[],T);
配列にデータを追加する出力レンジの実装です。 この実装は沢山の回数追加をする場合 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を配列で初期化した後にオリジナルの配列へ追加をすると、再割り当てが発生します。

void reserve(size_t newCapacity);
追加のために最低でも newCapacity の容量を確保します。 要求以上の数の要素が追加可能になることもあります。 newCapacity < capacity の時は、 何も行われません。

size_t capacity();
配列の容量 (メモリの再割り当てなしでデータ追加できる最大サイズ)を返します。 どんな追加でも再割り当てが発生する状況では 0 を返します。

T[] data();
管理している配列を返します。

void put(U)(U item); if (isImplicitlyConvertible!(U,T) || isSomeChar!(T) && isSomeChar!(U))
管理している配列にデータを1つ追加します。

void shrinkTo(size_t newlength);
管理配列を指定した長さに縮めます。 現在の長さより長い値を指定すると例外が飛びます。

void clear();
管理している配列をクリアします。

struct RefAppender(A : T[],T);
配列をその場で更新するAppenderです。全ての呼び出しが内部のAppender実装に転送され、 また同時に、渡されたオリジナルの配列のポインタを書き換えます。

this(T[]* arr);
指定の配列への参照をもとにRefAppenderを構築します。これはデータをコピーしません。 arr.capacity よりも大きい容量を配列が持っている場合、 Appenderによって使用されます。RefAppender は arr が null でないことを仮定しています。

注意点として、Appenderによる追加が終わるまでは、元配列への通常の追加 (たとえば ~=) は行わないで下さい。 Appenderからの追加がそれを上書きしてしまいます。

size_t capacity();
配列の容量を返します (再割り当てが発生するまでに追加できる最大要素数です)。 どんな追加でも再割り当てが発生する状況では 0 を返します。

T[] data();
管理している配列を返します。

Appender!(E[]) appender(A : E[], E)(A array = null);
array で初期化した Appender!(A) オブジェクトを返す便利関数です。

RefAppender!(E[]) appender(A : E[]*, E)(A array);
array で初期化した RefAppender!(A) オブジェクトを返す便利関数です。 配列ポインタに null を指定することはできません。代わりに他のバージョンの appender を使用して下さい。