digitalmars.D - clear all elements from an array or AA ?
- Sai (7/7) Aug 20 2004 Hello all,
- J C Calvarese (8/15) Aug 20 2004 I thought there were three methods for clearing the items from an associ...
- Ben Hinkle (27/31) Aug 20 2004 It depends :-)
Hello all, Is there any easy way to clear all elements from an array or AA ? For array, will this work ? is this efficient ? array.length = 0 And how to clear an AA with out using for loop ? Thanks Sai
Aug 20 2004
In article <cg5hqv$kqr$1 digitaldaemon.com>, Sai says...Hello all, Is there any easy way to clear all elements from an array or AA ? For array, will this work ? is this efficient ? array.length = 0 And how to clear an AA with out using for loop ? Thanks SaiI thought there were three methods for clearing the items from an associative array, but I could only find two: 1. aA = null; /* implementation-dependent */ 2. foreach(char[] key; aA.keys) delete aA[key]; See http://www.dsource.org/tutorials/index.php?show_example=104 for more details. jcc7
Aug 20 2004
Is there any easy way to clear all elements from an array or AA ? For array, will this work ? is this efficient ? array.length = 0 And how to clear an AA with out using for loop ?It depends :-) If you just want to clear the variable without regard to maintaining the capacity of the existing hash table, you can run array = array.init; Note if you had any other variables referring to the array data, like array2 = array; array = array.init; then array2 will not be affected. If you want to preserve the capacity of the hash table and simultaneously clear out the actual array contents so that all variables referring to the same array will be cleared, you'll need to use some compiler-dependent code. The following is copied from my MinTL library - you can use it however you like: /** Clear the contents of an associative array without losing * capacity. Compiler-dependent. * \param x the array to clear */ template reset(Key,Value) { void reset(Value[Key] x) { void*[] a = cast(void*[])x; a[] = null; } } For example: int[int] array; ... reset!(int,int)(array);
Aug 20 2004