Здравствуйте)
multimap<int,multimap<string,int> >knot;
//заполняем ее...
//хотим посмотреть:
void Base::show_map()
{
typedef multimap <int, multimap<string,int> > Map;
Map::iterator it,st;
for(it=knot.begin();it!=knot.end();it=st)
{
int key=(*it).first;
cout<<key<<"-"<<endl;
pair<Map::const_iterator,Map::const_iterator> mpair=knot.equal_range(key);
for(st=mpair.first;st!=mpair.second;++st)
{тратата}
}
}
Ругается на for(st=mpair.first;st!=mpair.second;++st){}
Почему? Ведь такое работает:
typedef multimap<string, int> Map;
typedef Map::iterator mapIter;
Map mymap;
//заполняем ее..
//хотим посмотреть:
mapIter it, st;
for (it = mymap.begin(); it != mymap.end(); it = st)
{
string Key = (*it).first;
cout << Key << "-" << endl;
pair<mapIter, mapIter> mpair = mymap.equal_range(Key);
for (st = mpair.first; st != mpair.second; ++st)
{ tratata}
}