Попробуй так:
| Код | char buf[256]; FILE* f; map<string,int> dictionare; char seps[]=" .,/\"\'~!@#$%^&*()-+=|:;\t\n\r\\{}[]<>"; char *word; f=fopen("source1.cpp","r"); if(!f) { cout<<"not opened\n"; return; }
while(fgets(buf,256,f)) { word=strtok(buf,seps); while(word) { //cout<<word<<'\t'; dictionare[word]++; word=strtok(NULL,seps); } //cout<<'\n'; } fclose(f); multimap <int,string> mirror; typedef pair <int,string> pis; for ( map<string,int>::iterator i = dictionare.begin( ); i != dictionare.end( ); i++ ) { cout <<i->first<< " " << i -> second<<'\t'; mirror.insert(pis(i->second,i->first)); } cout<<"\n\n!!!!!!!!!!!!and mirror now\n\n"; for ( multimap<int,string>::iterator i = mirror.begin( ); i != mirror.end( ); i++ ) { cout <<i->first<< " " << i -> second<<'\t'; }
|
А вообще-то нужно переопределить операции сравнения по ключу, см.MSDN2003
|