2017-03-20 36 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++标准库提供了关联容器(又名字典,又名地图),以及搜索容器内最大元素的算法。

相关问题