→ yauhh:嗯!沒錯 10/22 09:07
推 loveme00835:把問題簡化成這樣當然好做, 多來幾個 INT_MAX, 然後數 10/22 12:11
→ loveme00835:字種類不多, 這樣的線性... 10/22 12:11
推 loveme00835:如果是這個做法我會用 map + priority_queue 喔 XD 10/23 00:46
推 tomap41017:XD 10/23 00:49
→ tomap41017:速度的差別嗎? 10/23 00:50
推 loveme00835:heap & RB tree 的速度這情況下應該是沒差多少, 不過 10/23 01:15
→ loveme00835:我不確定 end() 回傳的迭代器是不是屬於Bidirectional 10/23 01:16
→ loveme00835:Iterator, 最好還是用 rbegin 會比較好, 我會選用 10/23 01:17
→ loveme00835:priority_queue 的原因是因為他的介面很簡單, 我只需 10/23 01:18
→ loveme00835:自訂比大小的方法, 就可以等著一直取最大的元素出來, 10/23 01:18
→ loveme00835:而不必去記從哪邊取, 或是作key-value互換的動作 10/23 01:19
推 tomap41017:我是覺得還要多寫比較方法以及紀錄眾數及次數是什麼 10/23 01:34
→ tomap41017:會比較麻煩一點,就直接用第二個map開工拉XD 10/23 01:35
推 loveme00835:記住次數就好了說@_@ 看個人喜好囉~ 10/23 01:36
→ tomap41017:map的iter是bidirectional沒錯,--是因為past the end 10/23 01:36
→ tomap41017:你也太快回文= = 10/23 01:36
→ loveme00835:不, pass the end 不是指他真的在最後一個元素之後, 10/23 01:37
→ loveme00835:那只是一個概念, 雖然在vector裡真的是如此, 但在list 10/23 01:38
→ loveme00835:中, 或是 istream_iterator 來講, 都有可能是一個特別 10/23 01:38
→ loveme00835:的數值, 像是 NULL, 頂多只能當作標兵, 而不能用它來 10/23 01:39
→ loveme00835:作往回移的效果 10/23 01:39
推 loveme00835:打錯字 pass → past 10/23 01:41
推 tomap41017:我知道她是一個概念,畢竟rb tree要說最後一個元素很怪 10/23 01:44
→ tomap41017:而回傳的是bidirectional iter便代表可以--囉! 10/23 01:45
→ tomap41017:在sgi stl的pre condition內有寫到 10/23 01:45
→ tomap41017:i is dereferenceable or past-the-end. There exists 10/23 01:45
→ tomap41017: a dereferenceable iterator j such that i == ++j. 10/23 01:46
推 loveme00835:如果回傳的是BidirectionalIterator, 就表示可以--, 10/23 01:48
→ loveme00835:那你知道 past the end 本來就違反 dereferencable 這 10/23 01:49
→ loveme00835:個操作嗎? 你上面那句話只是說明 pass the end 是 rea 10/23 01:50
→ loveme00835:chable 並沒有說 從 past the end 還可以回來 10/23 01:50
→ loveme00835:找到了, 規格書中 24.1.4 的 Table 75 的第一列寫到 10/23 02:10
→ loveme00835:--i 的情況, 當有一個 dereferencable 的迭代器 s, 使 10/23 02:12
→ loveme00835:得 r == ++s, 那 --r 就是合法的 10/23 02:13
推 tomap41017:規格書你是上網買嗎XD?iterator的用法就此打住吧 10/23 12:20