如何在没有数据库的情况下解决这3个用例?

时间:2015-10-30 17:51:57

标签: java c++ algorithm data-structures

我有Merchant_Id,Merchant_details,Shop_Id并且有类别。

  • 如果我使用<创建HashTable Merchant_Id,Merchant_details>对于给定的Merchant_Id,Merchant_details的检索将很容易。
  • Shop_Id可以封装在Merchant_details中,因此我可以检索Merchant_Id的商店列表。

  • 如果我需要列出特定类别的商家列表,例如' restaurant'或者' sports'。而且我不想遍历整个项目列表来查找类别。

如何在没有数据库的单一结构中合并所有三个。

2 个答案:

答案 0 :(得分:0)

建议:
使用Merchant_Id,Merchant_Details和Shop_Id创建结构。 将它们放入std::vector 创建一个空的std::map<Merchant_ID, unsigned int>

遍历向量,向地图添加元素:

  merchant_id_map[vector[i].Merchant_ID] = i;

这称为索引表。 也为其他字段创建一个。

如果您需要按Merchant_Id进行搜索,请使用merchant_id_map获取向量中的索引:

  unsigned int vector_index = merchant_id_map[merchant_id];
  record = database_vector[vector_index];

答案 1 :(得分:0)

C ++风味:

    using category_assignment = std::set<merchant_id_type>;
    std::map<std::string, category_assignment> categories;

(无论您将它放在哪里)都可以为您提供从类别名称到相应商家的便宜访问权限。

问题在您需要倒退时开始(&#34;商家N属于哪些类别?&#34;)

为此,您应该将地图封装在类似单一的类X中,为反向映射添加地图,并通过X的界面管理两个地图。