映射唯一值和重复值的有效方法.可以访问密钥或值的位置

ava*_*ava 5 c++ stdmap c++11

没有字符串需要与另一个字符串映射.

Ex :     Bacardi_old - > Facundo 
         Smirnoff_old -> Pyotr 
         Seagram_old  -> Joseph
         This keep on ..... may be around 1000
Run Code Online (Sandbox Code Playgroud)

有一些字符串需要用重复的字符串映射.

Ex :     Bacardi_new  -> Facundo 
         Smirnoff_new -> Facundo 
         Seagram_new  -> Facundo 
Run Code Online (Sandbox Code Playgroud)

要求:如下案例

案例1:品牌名称输入时.所有者名称作为输出.

input : Bacard_old
output: Facundo
Run Code Online (Sandbox Code Playgroud)

案例2:当所有者名称输入品牌名称作为输出时.

input : Facundo
output : Bacardi_old, Bacardi_new ,Smirnoff_new ,Seagram_new 
Run Code Online (Sandbox Code Playgroud)

我的方法:

我有一张地图如下:

std::map<std::string,std::vector<std::string>> Mymap;
Run Code Online (Sandbox Code Playgroud)

2.我应该创建两个映射一个唯一映射,另一个映射复制

std::map<std::string,std::string>Mymap
std::map<std::string,std::vector<std::string>>Mymap
Run Code Online (Sandbox Code Playgroud)

就所有方面而言,第二种选择是否优于第一种选择.请建议最好的方法.

注意:我坚持使用c ++ 11.没有升级库.

Ame*_*deo 2

最好的方法取决于您的需求。您对访问速度或插入速度感兴趣吗?或者您有兴趣减少使用的内存空间吗?

您建议的第一个解决方案(键=品牌和值=所有者的地图)使用较少的内存,但需要完整扫描才能按所有者执行搜索。

第二种解决方案:

  • 带有 key=brand 和 value=owner 的地图
  • 一张地图,其中键=品牌,值=所有者列表

按所有者搜索和按品牌搜索速度更快。但是,它需要更多内存,并且您还需要为每个新对执行 2 次插入。