【发布时间】:2012-01-08 17:01:43
【问题描述】:
我想创建一个包含不同字符串的结构,并为每个字符串分配一些(不是唯一的)int 值。填充完该结构后,我想检查每个字符串有多少个不同的 int 已分配给它们,它们到底是什么。我知道可以使用多图来解决这个问题。但是我不确定是否(或如何)可以获得包含在多重映射中的所有不同字符串,因为函数“find”需要一个参数进行匹配,而我不知道何时搜索哪些不同的值可能在多图。多图如何做到这一点?
作为替代解决方案,我尝试使用带有向量作为值的简单地图。但是我仍然无法完成这项工作,因为似乎无法识别向量的迭代器,它表明我:迭代器必须有一个指向类类型的指针。
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->吗? -
您的示例设计非常糟糕,请尝试使用带有仿函数的 for_each 之类的 stl