On Saturday, 7 February 2026 at 04:31:33 UTC, IchorDev wrote:
On Wednesday, 4 February 2026 at 08:45:06 UTC, axricard wrote:
Hello, is there some structure in standard library that acts
like Appender but works also on std.container.array Arrays ?
I'd like to have the capacity of Arrays doubling every time
new memory is allocated.
Appender requires the input to be a dynamic array, which is
not the case for std.container.array Arrays.
`Appender` only exists so that you can continually append to a
dynamic array without the GC having to look up its `capacity`
for every append. `Array` already keeps track of its own
[`capacity`](https://dlang.org/phobos/std_container_array.html#.Array.capacity), so you don't need to use an `Appender` on it, just use `Array` on its own.
I see your point, but my question was more about an other nice
property of Appender's: they double their size every time they
need to re-allocate, which is not the case in for std.container
Arrays. Do I have to write my own wrapper to have such behavior
with Array's ?
```D
import std;
void append(T)(ref T arr, int elem)
{
arr ~= elem;
writefln("capacity after append: %u", arr.capacity);
}
void main()
{
writeln("Appender");
auto app = appender!(int[])();
foreach(i; iota(0, 20))
app.append(i);
writeln("\n=============");
writeln("Array");
auto arr = Array!(int)();
foreach(i; iota(0, 20))
arr.append(i);
}
```
Output:
```
Appender
capacity after append: 8
capacity after append: 8
capacity after append: 8
capacity after append: 8
capacity after append: 8
capacity after append: 8
capacity after append: 8
capacity after append: 8
capacity after append: 16
capacity after append: 16
capacity after append: 16
capacity after append: 16
capacity after append: 16
capacity after append: 16
capacity after append: 16
capacity after append: 16
capacity after append: 32
capacity after append: 32
capacity after append: 32
capacity after append: 32
=============
Array
capacity after append: 1
capacity after append: 2
capacity after append: 4
capacity after append: 4
capacity after append: 7
capacity after append: 7
capacity after append: 7
capacity after append: 11
capacity after append: 11
capacity after append: 11
capacity after append: 11
capacity after append: 17
capacity after append: 17
capacity after append: 17
capacity after append: 17
capacity after append: 17
capacity after append: 17
capacity after append: 26
capacity after append: 26
capacity after append: 26
```