digitalmars.D.learn - Dynamic array of strings and appending a zero length array
- Cecil Ward (19/19) Jul 08 2023 I have a dynamic array of dstrings and I’m spending dstrings to
- Cecil Ward (2/8) Jul 08 2023 s/spending/appending/
- FeepingCreature (5/14) Jul 08 2023 You can append an element to an array. You can also append an
- H. S. Teoh (8/13) Jul 08 2023 Unlike C/C++, the D runtime always ensures that things are initialized
- Cecil Ward (3/16) Jul 09 2023 Many thanks, it might give me a slightly better result just doing
I have a dynamic array of dstrings and I’m spending dstrings to it. At one point I need to append a zero-length string just to increase the length of the array by one but I can’t have a slot containing garbage. I thought about ++arr.length - would that work, while giving me valid contents to the final slot ? What I first did was arr ~= []; This gave no errors but it doesn’t increase the array length, so it seems. Is that a bug ? Or is it supposed to do that? Then I tried arr ~= ""d; and that did work. Is there anything more efficient that I could do instead? I actually have an alias for the type of the strings so that they can be either dstrings or wstrings with just a recompilation. How should I then generate a zero-length string that has th correct type of dstring or wstring as I am stuck with the ‘d’-suffix on the end of the ""d at the moment. Can I just cast ? Not a reinterpret cast, but a proper value conversion?
Jul 08 2023
On Saturday, 8 July 2023 at 17:15:26 UTC, Cecil Ward wrote:I have a dynamic array of dstrings and I’m spending dstrings to it. At one point I need to append a zero-length string just to increase the length of the array by one but I can’t have a slot containing garbage. I thought about ++arr.length - would that work, while giving me valid contents to the final slot ? [...]s/spending/appending/
Jul 08 2023
On Saturday, 8 July 2023 at 17:15:26 UTC, Cecil Ward wrote:I have a dynamic array of dstrings and I’m spending dstrings to it. At one point I need to append a zero-length string just to increase the length of the array by one but I can’t have a slot containing garbage. I thought about ++arr.length - would that work, while giving me valid contents to the final slot ? What I first did was arr ~= []; This gave no errors but it doesn’t increase the array length, so it seems. Is that a bug ? Or is it supposed to do that?You can append an element to an array. You can also append an array to an array. Because [] can be an array of any type, the compiler guesses that it's an empty `string[]` array and appends it to no effect.
Jul 08 2023
On Sat, Jul 08, 2023 at 05:15:26PM +0000, Cecil Ward via Digitalmars-d-learn wrote:I have a dynamic array of dstrings and I’m spending dstrings to it. At one point I need to append a zero-length string just to increase the length of the array by one but I can’t have a slot containing garbage. I thought about ++arr.length - would that work, while giving me valid contents to the final slot ?Unlike C/C++, the D runtime always ensures that things are initialized unless you explicitly tell it not to (via void-initialization). So ++arr.length will work; the new element will be initialized to dstring.init (which is the empty string). T -- If Java had true garbage collection, most programs would delete themselves upon execution. -- Robert Sewell
Jul 08 2023
On Saturday, 8 July 2023 at 20:01:08 UTC, H. S. Teoh wrote:On Sat, Jul 08, 2023 at 05:15:26PM +0000, Cecil Ward via Digitalmars-d-learn wrote:Many thanks, it might give me a slightly better result just doing ++arr.length;I have a dynamic array of dstrings and I’m spending dstrings to it. At one point I need to append a zero-length string just to increase the length of the array by one but I can’t have a slot containing garbage. I thought about ++arr.length - would that work, while giving me valid contents to the final slot ?Unlike C/C++, the D runtime always ensures that things are initialized unless you explicitly tell it not to (via void-initialization). So ++arr.length will work; the new element will be initialized to dstring.init (which is the empty string). T
Jul 09 2023