私のクラスは次のようなものです:
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);
}
カウントは取得できますが、キー("str1")が2回来ます。したがって、私が見る答えは 2 2 1 です。
キーが 1 つしか得られないように反復する方法を誰かが教えてくれたら、とてもありがたいです。ところで、ありがとう、templatetypedef