How can convert the folowing to D.

learner via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Apr 1 05:29:37 PDT 2016


On Friday, 1 April 2016 at 01:09:32 UTC, Ali Çehreli wrote:
> On 03/31/2016 05:34 PM, learner wrote:
>> Hi,
>>
>> I have the following code in C++.
>>
>> rectangles.erase(rectangles.begin() + index);
>>
>> where rectangles is:
>> std::vector<Rectangle> rectangles;
>>
>> how can I do something similar in D.
>>
>> Learner.
>>
>
> import std.stdio;
>
> void main() {
>     int[] a = [ 1, 2, 3, 4, 5 ];
>     writefln("Before: %s", a);
>     size_t index = 2;
>     a = a[index .. $];       // <-- HERE
>     writefln("After : %s", a);
> }
>
> Note that it's a cheap operation; the elements are still in 
> memory and not destroyed. If you want to run their destructors 
> you can call destroy() explicitly:
>
> import std.stdio;
> import std.algorithm;
> import std.range;
>
> struct Rect {
>     int i;
>
>     ~this() {
>         writefln("Destroying %s", i);
>     }
> }
>
> void main() {
>     Rect[] a = iota(5).map!(i => Rect(i)).array;
>
>     writefln("Before: %s", a);
>
>     size_t index = 2;
>
>     // If you need to run the destructors now:
>     a[0 .. index].each!((ref e) => e.destroy);
>
>     a = a[index .. $];
>
>     writefln("After : %s", a);
> }
>
> Prints
>
> Destroying 0
> Destroying 1
> Destroying 2
> Destroying 3
> Destroying 4
> Before: [Rect(0), Rect(1), Rect(2), Rect(3), Rect(4)]
> Destroying 0
> Destroying 1
> After : [Rect(2), Rect(3), Rect(4)]
>
> Ali

thanks


More information about the Digitalmars-d-learn mailing list