C++ 是否有任何内置的hashmap函数来处理c++;?

C++ 是否有任何内置的hashmap函数来处理c++;?,c++,hashmap,hashtable,C++,Hashmap,Hashtable,这是我的输入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;

这是我的输入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

显然有更好的解决方案,如果您能给我一些想法,最好是一些代码,我将不胜感激。

假设冒号前的字符始终是a-Z之间的单个大写字符,并且输出行的顺序不重要,您可以使用此解决方案

intmain(){
std::无序地图mmap;
std::字符串行;
std::stringstream;
while(std::getline(文件,行)){
str(line);
字符串字;
流>>字;
if(mmap.find(word)=mmap.end()){
mmap[word]=std::vector(26);
}
字符字母,九月;
int-num;
流>>字母>>九月>>数字;
std::string&entry=mmap[word][letter-'A'];
if(entry.empty())
条目+=std::to_字符串(num);
其他的
条目+=“#”+std::to_字符串(num);
stream.clear();
}
对于(自动常量和[word,record]:mmap){

std::cout您可能在寻找什么?如果输出顺序很重要,哈希表就不会这样做,因为它不一定是按顺序排列的。从输入数据填充的
std::map
可能会满足您的需要。如果顺序不重要,例如World可以排在Hello之前,B可以排在a之前,和/或2可以排在1之前,t可以使用无序映射和无序集合。无论哪种方式,集合映射的映射都会/应该满足您的需要。我不想像在另一个映射中使用键一样使用映射:(感谢您的帮助为什么在向量(26)中使用字母-‘a’?);是向量的大小吗?是的,26是向量的大小。当您要将单个字母字符映射到其他对象时,一种巧妙的方法是创建一个具有字母长度的数组。执行
数组[字母-'a']将访问表示字母“代码>字母< /代码>的插槽。C++中的字符使用ASCII表,其中字母表示为内部数字。所有字符包括字母字母,可以用作数字,所以执行<代码>字母-A”/代码>其中“代码>字母==‘a’/CODE使它成为代码‘A’-A’< /代码>是0,那么如果
letter=='B'
它就是'1',依此类推。如果我想用string代替letter,那么我应该如何实现呢?Hello str:1代替Hello A:1@CarlosErmani您可以使用
无序映射
来代替
向量
,并进行更多的修改。
无序映射
映射
如果你关心秩序。