How array concatenation works... internally
Dnewbie
newbie at d.com
Mon Apr 23 23:15:13 UTC 2018
Hi,
I'd like to understand how array concatenation works internally,
like the example below:
//DMD64 D Compiler 2.072.2
import std.stdio;
void main(){
string[] arr;
arr.length = 2;
arr[0] = "Hello";
arr[1] = "World";
writeln(arr.length);
arr = arr[0..1] ~ "New String" ~ arr[1..2];
writeln(arr.length);
foreach(string a; arr){
writeln(a);
}
}
http://rextester.com/DDW84343
The code above prints:
2
3
Hello
New String
World
So, It changes the "arr" length and put the "New String" between
the other two. It's very fast with some other tests that I made.
Now I'm curious to know what's happening under the hood. It's
related to memcpy?
On Phobos "array.d" source I've found this:
/// Concatenation with rebinding.
void opCatAssign(R)(R another)
{
auto newThis = this ~ another;
move(newThis, this);
}
But now I'm having problem to find how I can reach this "move"
function, since I couldn't find any "move" on the "std" folder.
Thanks in advance.
More information about the Digitalmars-d-learn
mailing list