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

Reply via email to