我想创建一个结构,它包含不同的字符串,并为它们中的每一个分配一些(而不是一个唯一的)int值。在填充了这个结构之后,我想检查每个字符串有多少不同的int分配给了它们,以及它们究竟是哪一个。我知道可以用multimap解决这个问题。然而,我不确定是否有可能将所有不同的字符串包含到multimap中,因为函数“find”需要一个匹配参数,而我不知道何时可以搜索哪些不同的值多重映射。这怎么能用multimap来完成?C++在multimap中查找键和值
作为一种替代解决方案,我尝试使用带矢量的简单地图作为值。然而,我仍然无法做到这一点,因为向量的迭代器似乎没有被识别,它表明我:迭代器必须有一个指向类类型的指针。
map<string, vector<int>>::iterator multit;
int candID1, candID2, candID3;
for(multit=Freq.begin(); multit!=Freq.end(); multit++)
{
if((*multit).second.size()==3)
{
vector<int> vectorWithIds = (*multit).second;
for(vector<int>::iterator it = vectorWithIds.begin();
it != vectorWithIds.end();it++)
{
candID1 = it-> Problem: The iterator is not recognized
}
}
}
任何人都可以检测到问题?第一种方式还是第二种方式有没有可行的解决方案?
不应该在for循环中使用'* it'而不是'it->'吗? – Viruzzo
你的示例是一个非常糟糕的设计,试着用一个函子来使用stl like for_each – melbic