映射唯一值和重复值的有效方法。可以访问键或值的位置
Efficient way to map unique and duplicate value. Where key or value can be access
有 n 个字符串需要与另一个字符串映射。
Ex : Bacardi_old - > Facundo
Smirnoff_old -> Pyotr
Seagram_old -> Joseph
This keep on ..... may be around 1000
有些字符串需要与重复字符串进行映射。
Ex : Bacardi_new -> Facundo
Smirnoff_new -> Facundo
Seagram_new -> Facundo
要求:如下例
情况一:品牌名称输入时。所有者名称作为输出。
input : Bacard_old
output: Facundo
案例2:所有者名称输入品牌名称作为输出。
input : Facundo
output : Bacardi_old, Bacardi_new ,Smirnoff_new ,Seagram_new
我的方法:
1.I有如下地图:
std::map<std::string,std::vector<std::string>> Mymap;
2.Should 我创建了两个地图,一个是唯一映射,另一个是重复映射
std::map<std::string,std::string>Mymap
std::map<std::string,std::vector<std::string>>Mymap
第二个选项是否比第一个选项各方面都好。
请提出最佳方法。
注意:我坚持使用 c++11。没有增强库。
最佳方法取决于您的需要。您对访问速度或插入速度感兴趣吗?或者您有兴趣减少使用的内存 space?
您提出的第一个解决方案(key=brand 和 value=owner 的地图)使用的内存较少,但需要完全扫描才能按所有者执行搜索。
第二种方案:
- key=brand 和 value=owner 的地图
- 具有键=品牌和值=所有者列表的地图
按所有者搜索和按品牌搜索速度更快。但是,它需要更多内存,并且您还需要为每个新对执行 2 次插入。
最好的是高度相关的:)
您可以使用 std::multimap 来实现同样的效果。
std::multimap<std::string,std::string> my_map;
my_map.insert(std::make_pair("owner_name", "brand_name"));
现在您可以根据需要根据 key
或 value
进行搜索。
有 n 个字符串需要与另一个字符串映射。
Ex : Bacardi_old - > Facundo
Smirnoff_old -> Pyotr
Seagram_old -> Joseph
This keep on ..... may be around 1000
有些字符串需要与重复字符串进行映射。
Ex : Bacardi_new -> Facundo
Smirnoff_new -> Facundo
Seagram_new -> Facundo
要求:如下例
情况一:品牌名称输入时。所有者名称作为输出。
input : Bacard_old
output: Facundo
案例2:所有者名称输入品牌名称作为输出。
input : Facundo
output : Bacardi_old, Bacardi_new ,Smirnoff_new ,Seagram_new
我的方法:
1.I有如下地图:
std::map<std::string,std::vector<std::string>> Mymap;
2.Should 我创建了两个地图,一个是唯一映射,另一个是重复映射
std::map<std::string,std::string>Mymap
std::map<std::string,std::vector<std::string>>Mymap
第二个选项是否比第一个选项各方面都好。 请提出最佳方法。
注意:我坚持使用 c++11。没有增强库。
最佳方法取决于您的需要。您对访问速度或插入速度感兴趣吗?或者您有兴趣减少使用的内存 space?
您提出的第一个解决方案(key=brand 和 value=owner 的地图)使用的内存较少,但需要完全扫描才能按所有者执行搜索。
第二种方案:
- key=brand 和 value=owner 的地图
- 具有键=品牌和值=所有者列表的地图
按所有者搜索和按品牌搜索速度更快。但是,它需要更多内存,并且您还需要为每个新对执行 2 次插入。
最好的是高度相关的:)
您可以使用 std::multimap 来实现同样的效果。
std::multimap<std::string,std::string> my_map;
my_map.insert(std::make_pair("owner_name", "brand_name"));
现在您可以根据需要根据 key
或 value
进行搜索。