Re: data type that preserve order



On Sat, Oct 31, 2015 at 07:10:20AM +0000, Andrea Zagli wrote:
Il giorno ven 30 ott 2015 19:09:47 CET, Emmanuele Bassi ha scritto:
Hi;

On 30 October 2015 at 16:43, Andrea Zagli <azagli libero it> wrote:
is there a data type, similar to array, that preserve the order on which
elements are inserted?

All the array and list types preserve the order of insertion. For
obvious reasons, GHashTable doesn't.

for example ghashtable and gptrarray doesn't preserve the order, so when
they are traversed (for example with a "for" cicle, regarding gptrarray) the
order may be not the same when elements are inserted

GPtrArray preserves the order of insertion — it's an array, after all.
Why do you think it does not?


it is written on the help

https://developer.gnome.org/glib/stable/glib-Pointer-Arrays.html

"If you remove elements from the array, elements at the end of the
array are moved into the space previously occupied by the removed
element. This means that you should not rely on the index of
particular elements remaining the same."


may be also other data type makes the same thing? i didn't find
reference about that

It depends on how elements are removed from the array, there are two
ways to do it. If you use g_ptr_array_remove then the following elements
are moved down once place and the order is preserved. However if you
instead use g_ptr_array_remove_fast then the last element is moved to
fill the void. GArray offers the same two methods as well.

                Marcus


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]