我有Merchant_Id,Merchant_details,Shop_Id并且有类别。
Shop_Id可以封装在Merchant_details中,因此我可以检索Merchant_Id的商店列表。
如果我需要列出特定类别的商家列表,例如' restaurant'或者' sports'。而且我不想遍历整个项目列表来查找类别。
如何在没有数据库的单一结构中合并所有三个。
答案 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的界面管理两个地图。