2017-03-20 60 views
0

比方說,我有一個列表:如何獲取列表中最頻繁的元素?

std::list<std::string> list ("the", "the", "friend", "hello", "the");

在這種情況下,在列表中最常見的元素是"the"。有沒有辦法在C++中獲取這個元素?

謝謝!

+3

是的,有。你有沒有嘗試過自己呢? – user2079303

+0

不知道庫函數做什麼,但寫起來很容易。 – user4581301

+0

'std :: map'可能有助於 –

回答

2

解決您的問題的一般算法是建立一個字頻率的字典。下面是一個僞代碼算法,這不正是:

let L be the input sequence of strings (can be a list, doesn't matter) 
let F be an empty dictionary that maps string to a number 
for each string S in L 
    if not F contains S then 
     F[S] = 0 
    F[S] += 1 

一旦詞典構造,所有你需要做的是找到具有最高值的映射,並返回鍵。

C++標準庫提供了關聯容器(又名字典,又名地圖),以及搜索容器內最大元素的算法。

相關問題