【发布时间】:2019-11-23 15:49:34
【问题描述】:
这是我输入的txt文档:
Hello A:1
World A:1
Hello A:2
World A:2
Hello B:1
World B:2
Hello C:4
我尝试在 hashmap 中像循环 hashmap 一样使用它对我没有帮助。这是我的哈希表的键和值:
String word,word1,word2,word3,word4; // for example word1 is Hello, word2 is A:1
size_t sub1;
word = word1 + word2;
sub1 = word.find(":");
word3 = word.substr(0,sub1+1); //word3 = "Hello A" which is my key for internal hash function
word4 = word.substr(sub1+1,word.length()); //word4 = 1,2 which is word3's value.
您知道我可以使用哪个内置函数来获得此输出吗?
Hello A:1,2 B:1 C:4
World A:1,2 B:2
显然有更好的解决方案,如果您能给我一些想法,最好是一些代码,我将不胜感激?
【问题讨论】:
-
你在寻找std::unordered_map吗?
-
如果输出顺序很重要,哈希表就不会这样做,因为它不一定是有序的。从您的输入数据填充的
std::map<std::string, std::map<std::string, std::set<int>>>可能会满足您的需求。如果顺序不重要。即 World 可以在 Hello 之前,B 可以在 A 之前,和/或 2 可以在 1 之前,然后可以使用 unordered_map 和 unordered_set 代替。无论哪种方式,集合地图的地图都会/应该做你想要的。 -
我无法将地图用作另一张地图中的钥匙 :( 感谢您的帮助