My class is as follows:
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)
{
???????
}
}
}
};
background:
I want to introduce a graph that can have many nodes. The key will not be repeated, but may have several meanings.
str1 ----> val1
str1 ----> val2
str2 -----> val3
I want to know how can I get the number of values for a specific key? eg. in the above question for str1 will be 2?
As you can see, I tried to do something after some digging, but in vain.
What is wrong with my code?
thank
EDIT: after the templatetypedef comment, I edited the code:
for (it = outgoing.begin();it != outgoing.end();++it)
{
cout<< (*it).first << " "<< outgoing.count((*it).first);
}
I can get the score, but the key ("str1") appears twice. So the answer that I see is 2 2 1.
I would really appreciate if someone taught me how to iterate this way, I only get one key. BTW, thanks, templatetypedef