Мой класс такой:
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?
Как видите, я попытался что-то сделать после того, как покопался, но тщетно.
Что не так с моим кодом?
спасибо
РЕДАКТИРОВАТЬ ::: после комментария templatetypedef я отредактировал код так:
for (it = outgoing.begin();it != outgoing.end();++it)
{
cout<< (*it).first << " "<< outgoing.count((*it).first);
}
Я могу получить счет, но ключ ("str1") приходит дважды. Поэтому я вижу ответ 2 2 1.
Я был бы очень признателен, если бы кто-нибудь научил меня, как выполнять итерации таким образом, я получил бы только один ключ. Кстати, спасибо, templatetypedef