# how to create 1-n relation using boost::multi_index?

This topic is 3492 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

hi all i try to create something like a 1-n relation between 2 structs like this
// some infos for a host
typedef struct SomeHost{
uint32_t ip;
uint16_t port;
std::string hostname;
// operator< ... // here we have some compare functions for our std::set
};

// many hosts form a group
typedef struct ServerGroup{
std::string groupid;
std::string writebuffer;
std::set<SomeHost> groupmembers;
};

struct ServerGropuID{};

// create an index for the group
typedef boost::multi_index::multi_index_container<
ServerGroup,
boost::multi_index::indexed_by<
boost::multi_index::ordered_unique<
boost::multi_index::tag<ServerGroupID>,
boost::multi_index::member<ServerGroup,std::string,&ServerGroup::groupid>
// and some indices ....
// how to create an index for groupmembers? e.g. to query: to which group belongs Host X?
>
>
> ServerList;

ServerList groups;


its just an example illustration, but as you can see i try to create a group of servers. using this group i want to query the structures using an index for example, i need to get the group structure for a specific server using its ip (or hostname) since im using multi_index for really simple indices i was asking myself if, and how, its possible to create a relation between 2 structures using boost (multi_index)? so, it would be great if anyone, has a hint on how to create such a relation between a [group of servers] and [the server details] without using another std::map for the mapping between those structures? (which would mean i have to maintain another structure/map, which gets confusing sooner or later) or maybe anyone has an alternative idea? thx@ll