加速包含兩個庫來處理這個:Boost.Bimap和Boost.MultiIndex。前者針對雙射(「雙向」)映射的問題,後者更爲一般,實現類似於具有任意索引的內存數據庫。
鑑於您的unsigned int
鍵不唯一映射到你對,我覺得多指標更是爲了。這是自從我最後一次使用這個庫很長一段時間,但看着教程,你需要像
struct YourData {
unsigned key;
std::pair<unsigned, unsigned> value;
};
typedef multi_index_container<
YourData,
indexed_by<
ordered_non_unique<member<YourData, unsigned, &YourData::key> >,
ordered_unique<member<YourData, std::pair<unsigned, unsigned>,
&YourData::value> >
>
> YourContainer;
如果你不想使用Boost,那麼你至少可以簡化您的當前設置通過替代
map<unsigned int, vector<pair<unsigned int, unsigned int> > >
由std::multimap<unsigned, std::pair<unsigned, unsigned>>
。