Do you want add contains and remove item Function in array?

BBaz via Digitalmars-d digitalmars-d at puremagic.com
Thu Feb 5 07:21:55 PST 2015


On Thursday, 5 February 2015 at 14:09:06 UTC, FrankLike wrote:
> Now operate array is not very quick,such as contains 
> function,remove item function
> can't get from arry module.
>
> template contains(T)
> {
> 	bool contains(T[] Array,T Element)
> 	{
> 		foreach(T ArrayElement; Array)
> 		{
> 			if(Element==ArrayElement)
> 			{
> 				return true;
> 			}
> 		}
> 		return false;
> 	}
> }
>
> template remove(T)
> {
> 	bool remove(T[] Array,T Element)
> 	{
> 		?????
> 		return true;
> 	}
> }
>
> or
>
> remove!("a == ?")(arr)
>
> How to get the easy and quickly way?
>
> Thank you.

If you encounter difficulties to memorize the functions then you 
can wrap the usefull thing in a struct, e.g:

---
struct array(T)
{
     T[] _arr;
     alias _arr this ;

     bool opIn_r(T)(T t)
     {
         import std.algorithm;
         return canFind(_arr, t);
     }
     alias canFind = opIn_r;

     typeof(_arr) remove(T t)
     {
         _arr = std.algorithm.remove(_arr, t);
         return _arr;
     }
}
---

If the editor you use has a completion proposal system then it'll 
work like a charm. I've myself in the process of doing something 
similar for DList because i've been intoxicated for years with 
the easiness of the pascal Run Time Library lists (they have 
exchange, add , remove etc...)


More information about the Digitalmars-d mailing list