【发布时间】:2018-01-18 22:59:46
【问题描述】:
我需要在自定义结构数组中找到最常见的元素。它们没有自定义 ID,只是匹配属性。
我正在考虑按频率对向量进行排序,但我不知道该怎么做。
【问题讨论】:
-
最简单的方法是使用
std::sort并提供一个 lambda 函数来比较您的需要。 -
你能举一个例子说明结构是什么样子,然后是一个未排序的向量,以及你想要的排序向量吗?
-
听起来您几乎需要构建直方图。如果是这样的话,
std::map做得很好。 -
我会为此使用一个键/值容器,也许是整数的 unordered_map。键将是自定义结构值(或它具有的任何自然键,即名称、ID 或您组成的东西) - 第一次通过数组箱进入带有键的地图,递增 int 值。然后你会在地图中找到最大值。该元素的键将是最常见的值。
-
请澄清您的问题。您是否要求根据向量中某些结构出现的频率对向量进行排序。即 - 如果您有这些数字 { 6, 4, 7, 6, 1, 4, 9, 6 },并且您想按每个数字出现的频率对它们进行排序。
标签: c++ algorithm sorting vector frequency