On Mon, 10 Feb 2014 16:47:34 -0500, Ty Overby <t...@pre-alpha.com> wrote:

So I'm using a std.container.Array for storing systems in my program, and I need to search through the array to find the system that I want to remove and then shift from that.

In Java I'd write

     ArrayList<System> systems;
     ....
     systems.remove(system);

And in D I was hoping to write

     Array!System systems;
     ....
     systems.linearRemove(systems.equalRange(system));

But for some reason equalRange isn't defined on std.container.Array, nor is it a module function.

equalRange is only valid for sorted containers or at least containers where the complexity to iterate over the range is sublinear. An array search would be linear.

I also tried

     systems.linearRemove(systems[].filter!(a => a == system));

but FilterResult isn't the same type as Array.Range.


I have to be missing something really basic. It couldn't possibly be this hard to remove an element from an array.

Typically in STL, you use partition and then delete the partitioned elements.

I would look for something like that, maybe someone with more experience with std.algorithm can chime in.
        
-Steve

Reply via email to