Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module util.array;
- import std.stdio;
- /**
- only for dynamic arrays
- */
- T[] pop_back(T)(ref T[] t)
- {
- T r = t[$];
- t.length = t.length - 1;
- return r;
- }
- unittest
- {
- //TODO:
- }
- alias add push_back;
- T[] add(T)(ref T[] t, T el)
- {
- t ~= el;
- return t;
- }
- unittest
- {
- //TODO:
- }
- T[] insert(T)(ref T[] t, T el, uint pos)
- {
- t.length = t.length + 1;
- t[pos+1..$] = t[pos..$-1];
- t[pos] = el;
- return t;
- }
- unittest
- {
- //TODO:
- }
- T[] remove(T)(ref T[] t, T el)
- {
- t = t.removeAt(t.indexOf(el));
- return t;
- }
- unittest
- {
- //TODO:
- }
- T[] removeUO(T)(ref T[] t, T el)
- {
- t = t.removeAtUO(t.indexOf(el));
- return t;
- }
- unittest
- {
- //TODO:
- }
- T[] removeAtUO(T)(ref T[] t, uint pos)
- {
- assert(pos < t.length);
- /*
- if(pos >= t.length)
- return t;
- */
- if (pos != t.length - 1)
- t[pos] = t[t.length - 1];
- t.length = t.length -1;
- return t;
- }
- unittest
- {
- uint[] u= [1,2,3,4,5,6,7,8,9];
- u.removeAtUO(3);
- assert(u[0] == 1);
- assert(u[1] == 2);
- assert(u[2] == 3);
- assert(u[3] == 9);
- assert(u.length == 8);
- u.removeAtUO(5);
- assert(u[0] == 1);
- assert(u[5] == 8);
- assert(u.length == 7);
- }
- T[] removeAt(T)(ref T[] t, uint pos)
- {
- assert(pos < t.length);
- if(pos == 0 && t.length <= 1)
- return null;
- if(pos == 0 && t.length > 1)
- return t[1..$];
- T[] tmp = t[0..pos];
- tmp ~= t[(pos+1)..$];
- t=tmp;
- return tmp;
- }
- unittest
- {
- uint[] u= [1,2,3,4,5,6,7,8,9];
- u.removeAt(3);
- assert(u[0] == 1);
- assert(u[1] == 2);
- assert(u[2] == 3);
- assert(u[3] == 5);
- assert(u.length == 8);
- u.removeAt(5);
- assert(u[0] == 1);
- assert(u[5] == 8);
- assert(u.length == 7);
- }
- bool has(T)(T[] t, T el)
- {
- foreach(T tx; t)
- {
- if(el == tx)
- {
- return true;
- }
- }
- return false;
- }
- unittest
- {
- uint[] u= [1,2,3,4,5,6,7,8,9];
- uint x = 6;
- assert(u.has(x) == true);
- x = 12;
- assert(u.has(x) == false);
- }
- uint indexOf(T)(T[] t, T el)
- {
- for(int i=0; i<t.length; ++i)
- {
- if(el == t[i])
- return i;
- }
- throw new Exception("Element not found");
- }
- unittest
- {
- uint[] u= [1,2,3,4,5,6,7,8,9];
- uint x = 5;
- assert(u.indexOf(x) == 4);
- x = 8;
- assert(u.indexOf(x) == 7);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement