new std.variant (was Re: The Right Approach to Exceptions)
Juan Manuel Cabo
juanmanuel.cabo at gmail.com
Wed Feb 22 18:00:31 PST 2012
On Thursday, 23 February 2012 at 01:36:32 UTC, Juan Manuel Cabo
wrote:
> 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).
I meant ref counted structs.
>
>>
>>
>> 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