www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - remove element(s) from dyn array

reply spir <denis.spir gmail.com> writes:
Hello,


* What is the D-idiomatic way to remove an element from a dynamic array?

* Ditto, for a slice, but with the 2 variants expression vs statement:
	a.removeSlice(i1, i2);
	a2 =3D a1.removeSlice(i1, i2);

* Can I rely on
	a.length =3D a.length - 1
to just remove the last element? If yes, is this considered good practice?


Denis
-- -- -- -- -- -- --
vit esse estrany =E2=98=A3

spir.wikidot.com
Nov 19 2010
next sibling parent reply Dmitry Olshansky <dmitry.olsh gmail.com> writes:
On 19.11.2010 16:11, spir wrote:
 Hello,


 * What is the D-idiomatic way to remove an element from a dynamic array?
 * Ditto, for a slice, but with the 2 variants expression vs statement:
 	a.removeSlice(i1, i2);
That would most likely be: std.array; int[] a = ...; replace(a,i1,i2,null);
 	a2 = a1.removeSlice(i1, i2);
hm, not sure how idiomatic is this: a2 = a1.dup; replace(a2,i1,i2,null);
 * Can I rely on
 	a.length = a.length - 1
 to just remove the last element? If yes, is this considered good practice?
For this one I'd use: a = a[0..$-1]; this way to me it's more clear how array is changed.
 Denis
 -- -- -- -- -- -- --
 vit esse estrany ☣

 spir.wikidot.com
-- Dmitry Olshansky
Nov 19 2010
parent Dmitry Olshansky <dmitry.olsh gmail.com> writes:
On 19.11.2010 17:53, Dmitry Olshansky wrote:
 On 19.11.2010 16:11, spir wrote:
 Hello,


 * What is the D-idiomatic way to remove an element from a dynamic array?
 * Ditto, for a slice, but with the 2 variants expression vs statement:
     a.removeSlice(i1, i2);
That would most likely be: std.array;
Ehm, that should have been import std.array. [snip] -- Dmitry Olshansky
Nov 19 2010
prev sibling parent bearophile <bearophileHUGS lycos.com> writes:
spir:

 * Can I rely on
 	a.length = a.length - 1
 to just remove the last element? If yes, is this considered good practice?
I think it's idiomatic in D, so it's OK. Currently you may also write that as: a.length -= 1; But this is not supported yet: a.length--; Bye, bearophile
Nov 19 2010