【发布时间】:2022-12-08 06:46:27
【问题描述】:
所以一个集合不允许重复,但是有没有一种方法或另一种数据结构可以让我获得重复元素的数量,即使它们已被删除?无论如何,让我更好地解释自己。
假设我正在提供以下输入:
[1, 2, 2, 3, 2, 5, 3]
如果我把它放在一个集合中,它最终会是这样的:
[1, 2, 3, 5]
哪个是我想要的,但是我怎么知道在它们被删除之前有三个 2?这不是与那些带有“桶”之类的数据结构有关吗?
基本上我希望输出是这样的:
[1, 2, 3, 5]
| | | |
[1, 3, 2, 1]
底部数组是顶部数组中每个元素的重复项数。
【问题讨论】:
-
你想到的数据结构是一个“包”。 C++ 将其称为
std::multiset。 -
您可以使用
std::map< Key,Value>来计算频率。Key是数字,Value是他们的频率 -
你想要容器中的信息吗?然后是
std::map。或者您想将其与容器分开存放?然后是std::set -
恕我直言,这个问题还不清楚。集合只存储唯一元素,因此您不能计算“集合中的重复元素”。如何知道有 3 个 2?您查看原始数据并计算 2s。您要解决的实际问题是什么?
-
你想计算频率。关于这个有很多问题。使用
std::map< number , frequency >
标签: c++