Я новый для увеличения несколько индексов контейнера, и был интересен, если он может решить более эффективным способом моей проблемы, упрощенный таким образом:Повысьте Мульти индекс: индекс на основе содержимого списка
struct A {
int id;
}
struct B {
int id;
std::list<A> products;
}
Каждого A, имеющими строго уникальный идентификатор, я хочу иметь возможность с одним контейнером с несколькими индексами, иметь возможность искать B. Идентификатором B и идентификатором A.
В настоящий момент я работаю с красивой std :: map и привязкой к карте. Идентификаторы к идентификаторам B. Так сказать. Он работает достаточно хорошо. Но, у меня другие параметры для такого взгляда вверх, и это становится действительно противный :)
EDIT:
Согласно комментарию просьбе я разработать несколько:
Я сателлиты, которые в свою очередь, много транспондеров и многих источников. Я хочу, чтобы найти спутник для данного идентификатора транспондера или идентификатор источника (которые действительно уникальны)
К сожалению, у меня нет руки на спутниковой структуре, значит, я не могу ее изменить.
Вкратце это выглядит так:
struct Satellite {
int norad_id;
std::list<Transponder> transponders;
std::list<Source> sources;
... some more data
}
То, что я хочу сделать, это просто поискаШлюпку независимо от спутников, и найти спутник, имеющую удельную transponder- или source- или NORAD идентификатор.
На данный момент я использую 3 красивые карты
std::map<int /*norad*/ ,Satellite> satellites;
std::map<int /*transponder id*/, int/* norad */> transponder_to_satellite;
std::map<int /* source_id */, int /* norad */ > source_to_satellite;
Из примера @sehe при условии, я вижу, что это будет несколько проще, если бы я икра relationnal структуры. Я предполагаю, что я дам ему попробовать ... :)
Вы должны сделать образец реальной. Как было сказано, мультимапа или бимапа будет много. «Но у меня есть другие параметры для такого поиска» (что?). Быть конкретной.Кроме того, попробуйте не указывать имена типов, потому что это сделает невозможным выявление основной проблемы XY. – sehe