این کدتون درست نیست اون while که نوشتین تا بینهایت اجرا میشه .
اگر ctrl+C هم بزنین برنامه مستقیم بسته میشه و خط های بعدی اصلا اجرا نمیشن .
کد یک map میسازه که key ها string هستن و مقدار ها int
less<string> هم نحوه مقایسه string ها هستش . یعنی string ها رو نزولی وارد map کنه .
اون حلقه آخر برای چاپ همه ی اعضای map به ترتیب هستش .
freq[word]++ ; هم value متناظر با key اون word رو یک واحد اضافه می کنه
.این کد رو احرا کنین کلمه ها رو وارد کنین خروجی رو ببینین(کلمه آخر هم end وارد کنین )
#include <iostream>
#include <map>
#include <algorithm>
#include <string>
using namespace std ;
int main(int argc, char**argv)
{
map <string , int, less<string>> freq;
string word ;
//read until end
while (cin >> word ) {
freq[word]++ ;
if(word=="end")
break;
}
map <string , int , less<string> > :: const_iterator iter ;
for ( iter = freq.begin() ; iter != freq.end() ; iter++){
cout << iter -> second << iter -> first << endl;
}
return 0 ;
} // end main