當前位置:成語大全網 - 書法字典 - 地圖字典排序

地圖字典排序

想法:

1.用空格和標點符號(如逗號和句號)作為分隔符將文章分成單個單詞。

2.將每個單詞轉換成小寫。

3.統計單詞數,記錄每個單詞出現在地圖上的次數。

4.對地圖中的記錄進行排序並輸出。

示例代碼:

# include & ltiostream & gt

# include & ltfstream & gt

# include & lt字符串& gt

# include & lt地圖& gt

# include & ltvector & gt

# include & lt算法& gt

使用命名空間std

int main()

{

ifstream infile(" English . txt ");//打開文件

字符串字;

地圖& ltstring,int & gt頻率圖;//存儲單詞及其頻率。

while(infile & gt;& gtWord) //循環讀取單詞。

{

if (word[word.size() - 1] == ' . '|| word[word.size() - 1] == ',' || word[word.size() - 1] == '?'|| word[word.size() - 1] == '!')//刪除標點符號

{

word = word.substr(0,word . size()-1);

}

transform(word.begin()、word.end()、word.begin()、::to lower);//轉換成小寫字母

frequency map[word]++;//統計詞頻

}

向量& ltpair & ltstring,int & gt& gtfrequency vec(frequency map . begin()、frequency map . end());//將地圖轉換為矢量

sort(frequencyVec.begin(),frequencyVec.end(),[](const pair & lt;string,int & gt& ampp1,常量對& ltstring,int & gt& ampp2) {return p1.second!= p2 .秒?p 1 . second & gt;p2 . second:p 1 . first & lt;p2.first});//按詞頻從高到低排序

對於(const auto & ampP: frequencyVec) //遍歷向量,輸出每個單詞及其詞頻。

{

cout & lt& ltp.first & lt& lt" " " & lt& ltp.second & lt& ltendl

}

返回0;

}