new std.variant (was Re: The Right Approach to Exceptions)
Juan Manuel Cabo
juanmanuel.cabo at gmail.com
Wed Feb 22 17:36:31 PST 2012
On Thursday, 23 February 2012 at 00:51:38 UTC, Jonathan M Davis
wrote:
[...]
> If appender ends up with multiple arrays in it, then random
> access is no longer O(1) and is therefore unacceptable. As
> such, most sort algorithms wouldn't work with it.
If all I want is binary search on a big appender, then it
is O(k * n * log(n)), and that k right there doesn't
bother me. Also, binary search is absolutely not
cpu cache friendly to begin with.
> Also, your bit about using appender to pass an array around
> wouldn't work either, because it wouldn't simply be wrapper
> around an array anymore.
>
> - Jonathan M Davis
Yeah, but I don't care about the underlying array. I care
about multiple places referencing the same Appender. If I
from any place that references it, it appends to the same
appender. The Appender "array" has identity. Ranges do not:
int[] bla = [1,2,3];
int[] ble = bla;
ble ~= 4;
assert(bla.length == 3);
This is very easy to solve with appender.
This is what happens in Java:
ArrayList<Integer> bla = new ArrayList<Integer>();
bla.add(1);
ArrayList<Integer> ble = bla;
ble.add(2);
//prints 2
System.out.println(Integer.toString(bla.size()));
//prints 2
System.out.println(Integer.toString(ble.size()));
(yikes, aint that verbose!)
The ArrayList has identity. It is a class, so that it
many variables reference the _same_ object.
(this can be accomplished with structs too though, but
not with ranges).
>
>
> P.S. Please don't top post. Replies should go _after_ the
> preceding message.
Sorry, got it.
--jm
More information about the Digitalmars-d
mailing list