std.container.array.Array - multiple declarations
Struct Array
Array type with deterministic control of memory. The memory allocated
for the array is reclaimed as soon as possible; there is no reliance
on the garbage collector. Array uses malloc, realloc and free
for managing its own memory.
struct Array(T)
if (!is(Unqual!T == bool));
This means that pointers to elements of an Array will become
dangling as soon as the element is removed from the Array. On the other hand
the memory allocated by an Array will be scanned by the GC and
GC managed objects referenced from an Array will be kept alive.
Constructors
| Name | Description |
|---|---|
this
|
Constructor taking a number of items. |
this
|
Constructor taking an input range |
Properties
| Name | Type | Description |
|---|---|---|
back[get]
|
inout(T) | |
capacity[get]
|
size_t | |
dup[get]
|
Array | Duplicates the array. The elements themselves are not transitively duplicated. |
empty[get]
|
bool | |
front[get]
|
inout(T) | |
length[get]
|
size_t | |
length[set]
|
size_t | Sets the number of elements in the array to newLength. If newLength
is greater than length, the new elements are added to the end of the
array and initialized with T.
|
Methods
| Name | Description |
|---|---|
clear
|
Removes all the elements from the array and releases allocated memory. |
insertAfter
|
Inserts stuff before, after, or instead range r, which must
be a valid range previously extracted from this array. stuff
can be a value convertible to T or a range of objects convertible
to T. Both stable and non-stable version behave the same and
guarantee that ranges iterating over the array are never invalidated.
|
insertBack
|
Inserts the specified elements at the back of the array. stuff can be
a value convertible to T or a range of objects convertible to T.
|
insertBefore
|
Inserts stuff before, after, or instead range r, which must
be a valid range previously extracted from this array. stuff
can be a value convertible to T or a range of objects convertible
to T. Both stable and non-stable version behave the same and
guarantee that ranges iterating over the array are never invalidated.
|
linearRemove
|
Removes all elements belonging to r, which must be a range
obtained originally from this array.
|
opBinary
|
|
opDollar
|
|
opEquals
|
Comparison for equality. |
opIndex
|
|
opOpAssign
|
Forwards to insertBack.
|
opSlice
|
|
opSlice
|
|
opSliceAssign
|
Slicing operators executing the specified operation on the entire slice. |
opSliceOpAssign
|
Slicing operators executing the specified operation on the entire slice. |
opSliceUnary
|
Slicing operators executing the specified operation on the entire slice. |
removeAny
|
Removes the last element from the array and returns it. Both stable and non-stable versions behave the same and guarantee that ranges iterating over the array are never invalidated. |
removeBack
|
Removes the value from the back of the array. Both stable and non-stable versions behave the same and guarantee that ranges iterating over the array are never invalidated. |
removeBack
|
Removes howMany values from the back of the array.
Unlike the unparameterized versions above, these functions
do not throw if they could not remove howMany elements. Instead,
if howMany > n, all elements are removed. The returned value is
the effective number of elements removed. Both stable and non-stable
versions behave the same and guarantee that ranges iterating over
the array are never invalidated.
|
replace
|
Inserts stuff before, after, or instead range r, which must
be a valid range previously extracted from this array. stuff
can be a value convertible to T or a range of objects convertible
to T. Both stable and non-stable version behave the same and
guarantee that ranges iterating over the array are never invalidated.
|
reserve
|
Ensures sufficient capacity to accommodate e elements.
If e < capacity, this method does nothing.
|
Aliases
| Name | Description |
|---|---|
ConstRange
|
Defines the array's primary range, which is a random-access range. |
ImmutableRange
|
Defines the array's primary range, which is a random-access range. |
insert
|
Inserts the specified elements at the back of the array. stuff can be
a value convertible to T or a range of objects convertible to T.
|
Range
|
Defines the array's primary range, which is a random-access range. |
stableInsertBefore
|
Inserts stuff before, after, or instead range r, which must
be a valid range previously extracted from this array. stuff
can be a value convertible to T or a range of objects convertible
to T. Both stable and non-stable version behave the same and
guarantee that ranges iterating over the array are never invalidated.
|
stableRemoveAny
|
Removes the last element from the array and returns it. Both stable and non-stable versions behave the same and guarantee that ranges iterating over the array are never invalidated. |
stableRemoveBack
|
Removes the value from the back of the array. Both stable and non-stable versions behave the same and guarantee that ranges iterating over the array are never invalidated. |
stableRemoveBack
|
Removes howMany values from the back of the array.
Unlike the unparameterized versions above, these functions
do not throw if they could not remove howMany elements. Instead,
if howMany > n, all elements are removed. The returned value is
the effective number of elements removed. Both stable and non-stable
versions behave the same and guarantee that ranges iterating over
the array are never invalidated.
|
Note
When using Array with range-based functions like those in std,
Array must be sliced to get a range (for example, use array[]
instead of array). The container itself is not a range.
Example
typeof may give wrong result in case of classes defining opCall operator
https
//issues.dlang.org/show_bug.cgi?id=20589
destructor std.container.array.Array!(MyClass).Array.~this is @system so the unittest is @system too
class MyClass
{
T opCall(T)(T p)
{
return p;
}
}
Array!MyClass arr;
Struct Array
Array specialized for bool. Packs together values efficiently by
allocating one bit per element.
struct Array(T)
if (is(Unqual!T == bool));
Properties
| Name | Type | Description |
|---|---|---|
back[get, set]
|
bool | |
capacity[get]
|
size_t | |
dup[get]
|
Array | |
empty[get]
|
bool | Property returning true if and only if the array has
no elements.
|
front[get, set]
|
bool | |
length[get]
|
size_t | Returns the number of elements in the array. |
length[set]
|
size_t | Sets the number of elements in the array to newLength. If newLength
is greater than length, the new elements are added to the end of the
array and initialized with false.
|
Methods
| Name | Description |
|---|---|
clear
|
Removes all the elements from the array and releases allocated memory. |
insertAfter
|
Inserts stuff before, after, or instead range r, which must
be a valid range previously extracted from this array. stuff
can be a value convertible to bool or a range of objects convertible
to bool. Both stable and non-stable version behave the same and
guarantee that ranges iterating over the array are never invalidated.
|
insertBack
|
Inserts the specified elements at the back of the array. stuff can be
a value convertible to bool or a range of objects convertible to bool.
|
insertBefore
|
Inserts stuff before, after, or instead range r, which must
be a valid range previously extracted from this array. stuff
can be a value convertible to bool or a range of objects convertible
to bool. Both stable and non-stable version behave the same and
guarantee that ranges iterating over the array are never invalidated.
|
linearRemove
|
Removes all elements belonging to r, which must be a range
obtained originally from this array.
|
moveAt
|
Indexing operators yielding or modifyng the value at the specified index. |
opBinary
|
|
opIndex
|
Indexing operators yielding or modifyng the value at the specified index. |
opIndexAssign
|
Indexing operators yielding or modifyng the value at the specified index. |
opIndexOpAssign
|
Indexing operators yielding or modifyng the value at the specified index. |
opOpAssign
|
Forwards to insertBack.
|
opSlice
|
|
opSlice
|
|
removeAny
|
Removes the last element from the array and returns it. Both stable and non-stable versions behave the same and guarantee that ranges iterating over the array are never invalidated. |
removeBack
|
Removes the value from the back of the array. Both stable and non-stable versions behave the same and guarantee that ranges iterating over the array are never invalidated. |
removeBack
|
Removes howMany values from the back of the array. Unlike the
unparameterized versions above, these functions do not throw if
they could not remove howMany elements. Instead, if howMany > n,
all elements are removed. The returned value is the effective number
of elements removed. Both stable and non-stable versions behave the same
and guarantee that ranges iterating over the array are never invalidated.
|
replace
|
Inserts stuff before, after, or instead range r, which must
be a valid range previously extracted from this array. stuff
can be a value convertible to bool or a range of objects convertible
to bool. Both stable and non-stable version behave the same and
guarantee that ranges iterating over the array are never invalidated.
|
reserve
|
Ensures sufficient capacity to accommodate e elements.
If e < capacity, this method does nothing.
|
Inner structs
| Name | Description |
|---|---|
Range
|
Defines the array's primary range. |
Aliases
| Name | Description |
|---|---|
insert
|
Inserts the specified elements at the back of the array. stuff can be
a value convertible to bool or a range of objects convertible to bool.
|
linearInsert
|
Inserts the specified elements at the back of the array. stuff can be
a value convertible to bool or a range of objects convertible to bool.
|
stableInsert
|
Inserts the specified elements at the back of the array. stuff can be
a value convertible to bool or a range of objects convertible to bool.
|
stableInsertAfter
|
Inserts stuff before, after, or instead range r, which must
be a valid range previously extracted from this array. stuff
can be a value convertible to bool or a range of objects convertible
to bool. Both stable and non-stable version behave the same and
guarantee that ranges iterating over the array are never invalidated.
|
stableInsertBack
|
Inserts the specified elements at the back of the array. stuff can be
a value convertible to bool or a range of objects convertible to bool.
|
stableInsertBefore
|
Inserts stuff before, after, or instead range r, which must
be a valid range previously extracted from this array. stuff
can be a value convertible to bool or a range of objects convertible
to bool. Both stable and non-stable version behave the same and
guarantee that ranges iterating over the array are never invalidated.
|
stableLinearInsert
|
Inserts the specified elements at the back of the array. stuff can be
a value convertible to bool or a range of objects convertible to bool.
|
stableRemoveAny
|
Removes the last element from the array and returns it. Both stable and non-stable versions behave the same and guarantee that ranges iterating over the array are never invalidated. |
stableRemoveBack
|
Removes the value from the back of the array. Both stable and non-stable versions behave the same and guarantee that ranges iterating over the array are never invalidated. |
stableRemoveBack
|
Removes howMany values from the back of the array. Unlike the
unparameterized versions above, these functions do not throw if
they could not remove howMany elements. Instead, if howMany > n,
all elements are removed. The returned value is the effective number
of elements removed. Both stable and non-stable versions behave the same
and guarantee that ranges iterating over the array are never invalidated.
|
stableReplace
|
Inserts stuff before, after, or instead range r, which must
be a valid range previously extracted from this array. stuff
can be a value convertible to bool or a range of objects convertible
to bool. Both stable and non-stable version behave the same and
guarantee that ranges iterating over the array are never invalidated.
|
Authors
License
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ).