Suggestion: dynamic array operations
Chris Nicholson-Sauls
ibisbasenji at gmail.com
Wed Sep 6 12:13:37 PDT 2006
Nikita Kalaganov wrote:
>
> 1. Pop from array on front/back
>
> Syntax:
> ARRAY1 = ARRAY2 <<< INTEGER
> ARRAY1 <<<= INTEGER
>
> ARRAY1 = ARRAY2 >>> INTEGER
> ARRAY1 >>>= INTEGER
>
> Example:
> int[] a;
> // let a = [1,2,3,4,5]
> int[] b;
>
> b = a <<< 4; // b = [1,2,3,4] a = [5]
> b = a >>> 4; // b = [2,3,4,5] a = [1]
>
> a <<<= 3; // a = [1,2,3]
> a >>>= 1; // a = [3]
T[] pull (T) (T[] src, size_t len) {
T[] result ;
len = len >= src.length ? src.length : len + 1;
result = src[0 .. len];
src = src[len .. src.length];
return result;
}
T[] rpull (T) (T[] src, size_t len) {
T[] result ;
len = len >= src.length ? src.length : len + 1;
result = src[src.length - len .. src.length];
src = src[0 .. len];
return result;
}
int[] a ;
int[] b ;
a = array!(int)(1, 2, 3, 4, 5);
b = a.pull(4); // a == [5], b == [1, 2, 3, 4]
b = a.rpull(4); // a == [1], b == [2, 3, 4, 5]
This is precisely why I say we need an array utils module in Phobos. I have one in
progress in my Cashew project, but it is incomplete and could use updating now that D's
import system has been improved.
-- Chris Nicholson-Sauls
More information about the Digitalmars-d
mailing list