首选数据结构,如果您有两个键并且无法使用Boost

Preferred data structure if you have two keys and can not use boost?

本文关键字:两个 Boost 数据结构 如果      更新时间:2023-10-16

如果您有两个键,您喜欢什么数据结构,并且不能使用boost::multiindex

我可以拥有带有key1和/或key2的多个记录,但仅有一个记录key1 key2。我的要求是我应该能够搜索

  1. key1的所有记录
  2. key2的所有记录
  3. 单记录给定键1和key2

目前我正在使用std :: map

std::map <CString, std::vector<CutomClass>> m_map;

因此,第一个键在地图中使用,而另一个是我的班级的一部分(此类单独使用更多数据使用第二个键(

我可以使用其他数据结构吗?

我由于某种原因无法使用boost库,因此我只从标准库中寻求建议。

我实现的方式将使用三个数据结构。两个multi_map(或unordered_multimap(,一个OFF KEY1,另一个键为KEY2

key1 key2组合的第三个将我的 map( unordered_map(。对于map,这将是简单明了的,对于unordered_map,您必须组合键,或者,哈希两个子键,而不是组合哈希。

我似乎忘记了提到,只有其中一个地图(组合密钥的钥匙(将拥有实际值,另外两个地图将使在合并地图中保持的值保持指针。