View source code
Display the source code in std/array.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
std.array.Appender/appender
- multiple declarations
Function appender
Convenience function that returns a RefAppender
instance initialized
with arrayPtr
. Don't use null for the array pointer, use the other
version of appender
instead.
Example
int[] a = [1, 2];
auto app2 = appender(&a);
writeln(app2[]); // [1, 2]
writeln(a); // [1, 2]
app2 ~= 3;
app2 ~= [4, 5, 6];
writeln(app2[]); // [1, 2, 3, 4, 5, 6]
writeln(a); // [1, 2, 3, 4, 5, 6]
app2 .reserve(5);
assert(app2 .capacity >= 5);
Function appender
Convenience function that returns an Appender
instance,
optionally initialized with array
.
Example
auto w = appender!string;
// pre-allocate space for at least 10 elements (this avoids costly reallocations)
w .reserve(10);
assert(w .capacity >= 10);
w .put('a'); // single elements
w .put("bc"); // multiple elements
// use the append syntax
w ~= 'd';
w ~= "ef";
writeln(w[]); // "abcdef"
Struct Appender
Implements an output range that appends data to an array. This is
recommended over array ~= data
when appending many elements because it is more
efficient. Appender
maintains its own array metadata locally, so it can avoid
the performance hit of looking up slice capacity
for each append.
struct Appender(A)
if (isDynamicArray!A);
Constructors
Name | Description |
---|---|
this
(arr)
|
Constructs an Appender with a given array. Note that this does not copy the
data. If the array has a larger capacity as determined by arr ,
it will be used by the appender. After initializing an appender on an array,
appending to the original array will reallocate.
|
Properties
Name | Type | Description |
---|---|---|
capacity [get]
|
size_t | |
data [get]
|
inout(T)[] | Use opSlice() from now on. |
opSlice [get]
|
inout(T)[] |
Methods
Name | Description |
---|---|
clear
()
|
Clears the managed array. This allows the elements of the array to be reused for appending. |
put
(item)
|
Appends item to the managed array. Performs encoding for
char types if A is a differently typed char array.
|
put
(items)
|
Appends an entire range to the managed array. Performs encoding for
char elements if A is a differently typed char array.
|
reserve
(newCapacity)
|
Reserve at least newCapacity elements for appending. Note that more elements
may be reserved than requested. If newCapacity <= capacity , then nothing is
done.
|
shrinkTo
(newlength)
|
Shrinks the managed array to the given length. |
toString
()
|
Gives a string in the form of Appender!(A)(data) .
|
Aliases
Name | Description |
---|---|
opOpAssign
|
Appends to the managed array. |
Parameters
Name | Description |
---|---|
A | the array type to simulate. |
See Also
Example
auto app = appender!string();
string b = "abcdefg";
foreach (char c; b)
app .put(c);
writeln(app[]); // "abcdefg"
int[] a = [ 1, 2 ];
auto app2 = appender(a);
app2 .put(3);
app2 .put([ 4, 5, 6 ]);
writeln(app2[]); // [1, 2, 3, 4, 5, 6]
Authors
License
Copyright © 1999-2024 by the D Language Foundation | Page generated by ddox.