首选数据结构,如果你有两个键,不能使用提升?

时间:2018-02-23 16:02:16

标签: c++ data-structures

如果您有两个密钥,并且无法使用boost::multiindex

,您更喜欢哪种数据结构

我可以使用Key1和/或Key2拥有多条记录,但KEY1 KEY2的组合只有一条记录。 我的要求是我应该能够搜索

  1. KEY1的所有记录
  2. KEY2的所有记录
  3. 给出KEY1和KEY2
  4. 的单一记录

    目前我正在使用std :: map

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

    的 所以第一个键用在map中,另一个键是我的类的一部分(这个类只有更多的数据和第二个键)

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

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

1 个答案:

答案 0 :(得分:1)

我实现这个的方式将是三个数据结构。两个multi_map(或unordered_multimap),一个关键KEY1,另一个关键字KEY2

第三个是我{1}}(map)的KEY1 + KEY2组合。对于unordered_map,这将是简单而直接的,对于map,您必须组合键,或者哈希两个子键,然后组合哈希。

我似乎忘记提及,只有其中一个地图(组合键的键)将保存实际值,另外两个地图将保存指向组合地图中保存的值的指针。