【发布时间】:2011-09-15 01:08:58
【问题描述】:
我的课是这样的:
class Outgoing
{
multimap<string,string> outgoing;
public:
void makeConnection(string key, string value)
{
outgoing.insert(pair<string,string>(key,value));
}
void iterate()
{
multimap<string, string>::iterator it;
multimap<string, string>::iterator it2;
pair<multimap<string,string>::iterator,multimap<string,string>::iterator> ret;
for (it = outgoing.begin();it != outgoing.end();++it)
{
ret = outgoing.equal_range((*it)); ??????
for (it2=ret.first; it2!=ret.second; ++it2)
{
???????
}
}
}
};
背景:
我想表示一个可以有很多节点的图。键不会重复,但可以有多个值。
str1 ----> val1
str1 ----> val2
str2 -----> val3
我想知道如何获取特定键的值数量?例如在上面的问题中,str1 是 2?
如您所见,经过一番挖掘后,我尝试做某事,但徒劳无功。
我的代码有什么问题?
谢谢
EDIT ::: 在templatetypedef的注释之后,我将代码编辑为:
for (it = outgoing.begin();it != outgoing.end();++it)
{
cout<< (*it).first << " "<< outgoing.count((*it).first);
}
我可以得到计数,但是 key("str1") 出现了两次。所以我看到的答案是 2 2 1。
如果有人教我如何以这样一种方式进行迭代,我将非常感激,我只得到一个密钥。顺便说一句,谢谢,templatetypedef
【问题讨论】: