
On Sun, 08 Aug 2010 17:29:49 -0700, Steven Watanabe <watanabesj@gmail.com> wrote:
AMDG
Mostafa wrote:
For the following struct:
struct Flower { int type; string name; std::list<string> aliases; };
I want to create a multiindexed container that indexes Flower objects by type, name, and aliases, where aliases is some iteratable collection of strings. I just don't know if it's possible to create a multi-key key-extractor for aliases. So far I've come up with the following:
I assume that you want to be able to look up the Flower from a string, which should be one of the aliases? You can't do this with multi-index.
Yes.
A single object corresponds to a single key.
That's pretty much what I figured from the documentation, I was just hoping for some kind of workaround that I might have missed. Well, here goes a feature request ... (A rough outline.) I propose adding a key-extractorS concept to the multi-index library. Something along the lines of the existing key-extractor concept, modified such that key_extractorS::result_type is a Boost.Range of keys and providing adaptor classes for creating such a Range from multi_index::value_type member variables, methods ..., (basically a key-extractorS counterpart for the equivalent existing key-extractors, where approriate of course). The motivation for this request is that a multi-index element can be indexed by a collection of values associated with that element. As an example: (rehashing from previous posts) struct Flower { int getType() const; string name; std::list<string> aliases; }; struct Nursery { std::list<Flower *> flowers; }; 1) a multi-index of Flower objects each indexed by an alias from Flower::aliases, 2.1) a multi-index of Nursery objects each indexed by an alias from Nursery::flowers.aliases, 2.2) and and also indexed by Nursery::flowers.getType() Does this make sense? Should this be a new post, and if so should it be posted in the dev's group? Thanks, -Mostafa