Re: [問題] 統計string中單字出現的次數

看板C_and_CPP作者 (眠月)時間15年前 (2010/09/06 11:13), 編輯推噓2(2016)
留言18則, 4人參與, 最新討論串4/4 (看更多)
其實我一直很好奇你們幹嘛不 std::map<字串, 次數>? (或 unordered_map, hash_map 隨便) typedef CtnerType std::map<std::string, size_t> word_count ; Ctner word_count ; while ( cin >> s ) { word_count[s]++ ; } CtnerType::const_iterator ker = std::max_element( word_count.begin(), word_count.end(), [](const CtnerType::const_iterator& i) { return i->second ; };) std::cout << ker->first << "出現 " << ker->second << " 次。" << std::endl ; 還是我哪邊想漏了?其實不能這樣用 O_O? -- To iterate is human, to recurse, divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.108.180

09/06 11:14, , 1F
po 完才發現已經有了 = =" 奇怪我睡覺之前沒有阿..
09/06 11:14, 1F

09/06 11:15, , 2F
.........loveme 你是 bot 吧...........................
09/06 11:15, 2F

09/06 11:16, , 3F
我已經這樣做了啊 Q_Q max_element 那邊用的lambda
09/06 11:16, 3F

09/06 11:16, , 4F
function怪怪的耶~
09/06 11:16, 4F

09/06 11:27, , 5F
我分號是不是加錯地方...
09/06 11:27, 5F

09/06 11:39, , 6F
第三個參數應該是 BinaryPredicate 的 model
09/06 11:39, 6F

09/06 12:48, , 7F
真的耶, 我不知道在幹嘛 XD
09/06 12:48, 7F

09/06 14:48, , 8F
難得看到yoco大還沒睡醒XD
09/06 14:48, 8F

09/06 15:40, , 9F
因為說不定以後會有找出現次數第三多 第五多 第N多..
09/06 15:40, 9F

09/06 15:40, , 10F
之類的需求XD
09/06 15:40, 10F

09/06 15:41, , 11F
或者是文章讀1/10時統計一次 讀到2/10時再統計一次....
09/06 15:41, 11F

09/06 15:41, , 12F
之類的,基本上我還是覺得bimap比較靈活
09/06 15:41, 12F

09/06 15:42, , 13F
當然如果說照原文提出的需求而已的話 的確不用把次數也
09/06 15:42, 13F

09/06 15:42, , 14F
排序..
09/06 15:42, 14F

09/06 15:44, , 15F
反正這兩種方法的bottleneck都是在前期而不是最後最大值.
09/06 15:44, 15F

09/06 16:55, , 16F
到時候看需求用nth_element/partial_sort啦~雖然boost
09/06 16:55, 16F

09/06 17:00, , 17F
很強大, 也不是每個人都會嘗試去安裝來玩...
09/06 17:00, 17F

09/06 17:09, , 18F
其實給一個堪用的STL解法, 會不會接受還不知道 = =
09/06 17:09, 18F
文章代碼(AID): #1CX5nCqg (C_and_CPP)
文章代碼(AID): #1CX5nCqg (C_and_CPP)