On Tuesday, 13 February 2018 at 01:56:45 UTC, H. S. Teoh wrote:
On Tue, Feb 13, 2018 at 01:58:42AM +0000, Marc via
Digitalmars-d-learn wrote:
appender doesn't support string[] so in such case:
Why not? This seems to work:
import std.array;
import std.stdio;
void main() {
auto app = appender!(string[]);
foreach (i; 0 .. 1000) {
app.put("abc");
}
writeln(app.data);
}
T
Or simply don't allocate at all:
---
import std.algorithm, std.range, std.stdio;
void main()
{
"abc".repeat(1000).joiner.writeln;
}
---
https://run.dlang.io/is/ubGZwJ
writeln isn't @nogc atm, but if you want to prove that no
allocation happens, fallback to printf:
----
import core.stdc.stdio, std.algorithm, std.range, std.stdio;
void main() @nogc
{
"abc".repeat(1000).each!(s => printf("%.*s", s.length,
s.ptr));
}
---
https://run.dlang.io/is/V7PWXj