[Interest] Qt based Ordered Map container

Konstantin Tokarev annulen at yandex.ru
Tue Sep 3 10:33:47 CEST 2013


03.09.2013, 12:10, "Mandeep Sandhu" <mandeepsandhu.chd at gmail.com>:
> Hi All,
>
> Sometime (almost 2 yrs!) back we had a discussion here about having a new container type in Qt which would be like a QMap, except that it stored keys in their insertion order. This was mostly inspired by a Python data-structure - OrderedDict (http://docs.python.org/library/collections.html#collections.OrderedDict).
>
> Recently, I had some free time on hand and so though of implementing it using existing Qt containers. Here's the code for it:
> https://github.com/mandeepsandhu/qt-ordered-map
>
> It's not a core container in itself as it uses existing Qt containers for most of the implementation (much like the Python implementation).
>
> For storing the data I use a QHash and for keeping the key (insertion) order, I use a QLinkedList. The value stored in the hash, is actually a pair - of the user provided value and a QLinkedList _iterator_ which points to the item inserted in the linklist. This makes it quite easy and fast to delete items from these 2 containers in constant time.
>
> The performance of this container is similar to QHash except when you want all the values from it, as that requires first fetching the keys from the linklist and then using that to fetch the values from the hash table.
>
> It provides a sub-set of QMap API, complete with const and non-const iterators (you can use 'foreach' for iterating over all the values in their insert order).
>
> In case you want to use such a container, please try it out and let me know your feedback.

You need to use Boost.MultiIndex.


-- 
Regards,
Konstantin



More information about the Interest mailing list