On 1/21/22 1:36 PM, H. S. Teoh wrote:
On Fri, Jan 21, 2022 at 10:12:42AM +0000, forkit via Digitalmars-d-learn wrote:

[...]
     // id needs to be 9 digits, and needs to start with 999
     int[] idArray = takeExactly(iota(999*10^^6, 10^^9),
recordsNeeded).array;
[...]

This is wasteful if you're not planning to use every ID in this
million-entry long array.  Much better to just use an AA to keep track
of which IDs have already been generated instead.  Of course, if you
plan to use most of the array, then the AA may wind up using more memory
than the array. So it depends on your use case.

Yeah, iota is a random-access range, so you can just pass it directly, and not allocate anything.

Looking at the usage, it doesn't need to be an array at all. But modifying the code to properly accept the range might prove difficult for someone not used to it.

-Steve

Reply via email to