(How) Can I approximate a "dynamic" index (key extractor) for Boost MultiIndex?
Posted
by Sarah
on Stack Overflow
See other posts from Stack Overflow
or by Sarah
Published on 2010-04-22T22:26:52Z
Indexed on
2010/04/22
22:33 UTC
Read the original article
Hit count: 189
I have a MultiIndex container of boost::shared_ptrs
to members of class Host
. These members contain private arrays bool infections[NUM_SEROTYPES]
revealing Hosts' infection statuses with respect to each of 1,...,NUM_SEROTYPES serotypes. I want to be able to determine at any time in the simulation the number of people infected with a given serotype, but I'm not sure how:
- Ideally, Boost MultiIndex would allow me to sort, for example, by
Host::isInfected( int s )
, wheres
is the serotype of interest. From what I understand, MultiIndex key extractors aren't allowed to take arguments. - An alternative would be to define an index for each serotype, but I don't see how to write the MultiIndex container
typedef ...
in such an extensible way. I will be changing the number of serotypes between simulations. (Do experienced programmers think this should be possible? I'll attempt it if so.) - There are 2^(NUM_SEROTYPES) possible infection statuses. For small numbers of serotypes, I could use a single index based on this number (or a binary string) and come up with some mapping from this key to actual infection status. Counting is still darn slow.
- I could maintain a separate structure counting the total numbers of infecteds with each serotype. The synchrony is a bit of a pain, but the memory is fine. I would prefer a slicker option, since I would like to do further sorts on other host attributes (e.g., after counting the number infected with serotype s, count the number of those infected who are also in a particular household and have a particular age).
Thanks in advance.
© Stack Overflow or respective owner