SHARE
    TWEET
    Zoadian

    array.d

    Jul 15th, 2011
    148
    0
    Never
    Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
    D 2.14 KB | None | 0 0
    1. module util.array;
    2. import std.stdio;
    3. /**
    4. only for dynamic arrays
    5. */
    6. T[] pop_back(T)(ref T[] t)
    7. {
    8. T r = t[$];
    9. t.length = t.length - 1;
    10. return r;
    11. }
    12. unittest
    13. {
    14. //TODO:
    15. }
    16. alias add push_back;
    17. T[] add(T)(ref T[] t, T el)
    18. {
    19. t ~= el;
    20. return t;
    21. }
    22. unittest
    23. {
    24. //TODO:
    25. }
    26. T[] insert(T)(ref T[] t, T el, uint pos)
    27. {
    28. t.length = t.length + 1;
    29. t[pos+1..$] = t[pos..$-1];
    30. t[pos] = el;
    31. return t;
    32. }
    33. unittest
    34. {
    35. //TODO:
    36. }
    37. T[] remove(T)(ref T[] t, T el)
    38. {
    39. t = t.removeAt(t.indexOf(el));
    40. return t;
    41. }
    42. unittest
    43. {
    44. //TODO:
    45. }
    46. T[] removeUO(T)(ref T[] t, T el)
    47. {
    48. t = t.removeAtUO(t.indexOf(el));
    49. return t;
    50. }
    51. unittest
    52. {
    53. //TODO:
    54. }
    55. T[] removeAtUO(T)(ref T[] t, uint pos)
    56. {
    57. assert(pos < t.length);
    58. /*
    59. if(pos >= t.length)
    60. return t;
    61. */
    62. if (pos != t.length - 1)
    63. t[pos] = t[t.length - 1];
    64. t.length = t.length -1;
    65. return t;
    66. }
    67. unittest
    68. {
    69. uint[] u= [1,2,3,4,5,6,7,8,9];
    70. u.removeAtUO(3);
    71. assert(u[0] == 1);
    72. assert(u[1] == 2);
    73. assert(u[2] == 3);
    74. assert(u[3] == 9);
    75. assert(u.length == 8);
    76. u.removeAtUO(5);
    77. assert(u[0] == 1);
    78. assert(u[5] == 8);
    79. assert(u.length == 7);
    80. }
    81. T[] removeAt(T)(ref T[] t, uint pos)
    82. {
    83. assert(pos < t.length);
    84. if(pos == 0 && t.length <= 1)
    85. return null;
    86. if(pos == 0 && t.length > 1)
    87. return t[1..$];
    88. T[] tmp = t[0..pos];
    89. tmp ~= t[(pos+1)..$];
    90. t=tmp;
    91. return tmp;
    92. }
    93. unittest
    94. {
    95. uint[] u= [1,2,3,4,5,6,7,8,9];
    96. u.removeAt(3);
    97. assert(u[0] == 1);
    98. assert(u[1] == 2);
    99. assert(u[2] == 3);
    100. assert(u[3] == 5);
    101. assert(u.length == 8);
    102. u.removeAt(5);
    103. assert(u[0] == 1);
    104. assert(u[5] == 8);
    105. assert(u.length == 7);
    106. }
    107. bool has(T)(T[] t, T el)
    108. {
    109. foreach(T tx; t)
    110. {
    111. if(el == tx)
    112. {
    113. return true;
    114. }
    115. }
    116. return false;
    117. }
    118. unittest
    119. {
    120. uint[] u= [1,2,3,4,5,6,7,8,9];
    121. uint x = 6;
    122. assert(u.has(x) == true);
    123. x = 12;
    124. assert(u.has(x) == false);
    125. }
    126. uint indexOf(T)(T[] t, T el)
    127. {
    128. for(int i=0; i<t.length; ++i)
    129. {
    130. if(el == t[i])
    131. return i;
    132. }
    133. throw new Exception("Element not found");
    134. }
    135. unittest
    136. {
    137. uint[] u= [1,2,3,4,5,6,7,8,9];
    138. uint x = 5;
    139. assert(u.indexOf(x) == 4);
    140. x = 8;
    141. assert(u.indexOf(x) == 7);
    142. }
    Advertisement
    Add Comment
    Please, Sign In to add comment
    Public Pastes
    We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
    Not a member of Pastebin yet?
    Sign Up, it unlocks many cool features!

    AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /