سوالی در مورد map - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

سوالی در مورد map

0 امتیاز

سلام دوستان 

من یه برنامه با map  به شکل زیر دارم میخواستم بدونم دقیقا این برنامه چه کاری انجام میده و با دادن ورودی های زیر چه خروجی دارد . 

input :

class 

zamin

aseman

zamin

khorshid

mah

khorshid

khorshid

aseman

#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 ctrl+c
    while (cin >> word ) {
        freq [word]++ ;
    }
    
    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

 

سوال شده تیر 3, 1393  بوسیله ی taranom (امتیاز 9)   1 2
ویرایش شده تیر 3, 1393 بوسیله ی BlueBlade

1 پاسخ

+1 امتیاز

این کدتون درست نیست اون 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

 

پاسخ داده شده تیر 3, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
سلام
ممنون از راهنماییتون .
اگه میشه لطف کنید و مشکل برنامه منو بگین .
...