Matthias Käppler wrote:
> Hi,
>
> I have the following problem:
> I want to store file objects in a container 8for now, it's not
important how
> they look like).
> Now, on the one hand I need to be able to randomly pick files from
the
> container as fast as possible. So far I have been using std::map to
store
> the files, whereas the key was a unique file ID. That given, I could
pick
> random files from the container in O(logn).
> On the other hand, I need functionality to sort the files, e.g. by
date or
> size. However, std::sort and std::stable_sort only seem to work on
> non-associative containers. On top of that, std::map doesn't define
an own
> sorting operation, like std::list does.
>
> My questions:
>
> 1) How come there's no sorting operation for std::map?
>
> 2) Which solutions are at hand? Is there such a thing as a sortable
map at
> all?
>
> Thanks,
> Matthias
Check out the Boost Multi-Index Library at
http://www.boost.org/libs/multi_index/doc/index.html
It lets you define multiple "views" of data. So one view could be
sorted by filename, another sorted by date, and another by size.
--
Martin Rennix