问题标签 [multiset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
2285 浏览

java - Java:获取对象的唯一属性(如哈希码,但防冲突)

我有一项任务,需要为集合中的每个对象生成唯一值。如果哈希码合约中不允许冲突,那么使用哈希码将是完美的。

一个想法:将每个对象的哈希码记录到一个多重集中。然后,使用哈希码作为唯一标识符,但如果该哈希码不止一次在集合中,则使用也不在集合中的不同值。但这感觉笨重和尴尬。

更好的想法?

这是我已经拥有的:

编辑:我想这最初并不清楚,但是 id 编号确实需要成为对象的函数,因为getVertexName(V)会被多次调用,并且它期望对于相同的值V,它会得到相同的结果。

此外,Vertex 类型是通用的。所以我不能对特定的类进行任何修改来解决这个问题。

0 投票
5 回答
163 浏览

list - 当您不需要保留顺序时,您可以编码到更少的位吗?

假设您有一个 32 位整数列表和一个多重集中的相同 32 位整数集合(允许重复成员的集合)

由于 Sets 不保留顺序,但 List 保留,这是否意味着我们可以用比 List 更少的位对 Multiset 进行编码?

如果是这样,您将如何编码 Multiset?

如果这是真的,还有哪些其他示例不需要保留顺序可以节省位?

注意,我只是以 32 位整数为例。数据类型在编码中是否重要?数据类型是否需要固定长度且具有可比性才能获得节省?

编辑

任何解决方案都应该适用于具有低重复和高重复的集合。很明显,仅通过简单地计算重复来对多集进行高重复编码非常容易,但是如果集合中没有重复,这会占用更多空间。

0 投票
3 回答
13069 浏览

c# - .Net 有多重集的实现吗?

我正在寻找一个多重集的.Net 实现。谁能推荐一个好的?

(多重集或袋子是一个可以具有重复值的集合,您可以在其上进行集合操作:交集、差异等。例如,可以将购物车视为多重集,因为您可以多次出现相同的产品。)

0 投票
2 回答
723 浏览

c++ - 在 std::multiset (C++) 中协调 typedef 和结构

我不是专业的程序员,所以请不要犹豫,说明显而易见的。

我的目标是使用一个std::multiset容器 ( typedef EventMultiSet) 调用currentEvents来组织一个类型的结构列表Event,并让类的成员Host偶尔将新Event结构添加到currentEvents. 这些结构应该按其成员之一时间排序。我不确定我想做的有多少是合法的。g++ 编译器报告(在“Host.h”中)“错误:'EventMultiSet' 尚未声明。” 这就是我正在做的事情:

主要问题

  1. 我应该在哪里包含 EventMultiSet typedef?
  2. 我的 EventMultiSet 指针明显有问题吗?
  3. 我的 Event 结构中的比较函数(理论上)可以吗?

非常感谢您提前。

0 投票
3 回答
226 浏览

c++ - Multiset 容器似乎停止排序

我会很感激帮助调试多集容器的一些奇怪行为。有时,容器似乎停止排序。这是一个罕见的错误,很长一段时间后仅在一些模拟中才明显,而且我缺乏想法。(我是一个业余程序员——欢迎各种建议。)

我的容器是一个std::multiset包含Event结构的容器:

结构Event按其double time成员排序:

该程序迭代通过将具有无序时间的事件添加到EventPQ currentEvents然后按顺序拉出事件的周期。很少,在添加了一些事件之后(具有完全“合法”的时间),事件开始无序执行。

是什么导致事件无法正确排序?(或者什么会弄乱迭代器?)我已经检查了所有添加的事件时间都是合法的(即,都超过了当前的模拟时间),并且我还确认了错误不会发生,因为两个事件恰好被安排同时。

我很想就如何解决这个问题提出建议。

执行和添加事件的代码如下:


我应该补充一点,有时一个事件在执行时会从currentEvents. 这是用

即使这段代码看起来不错,我也想知道其他可以检查发生了什么的方法——我目前正在使用很多 asserts() 和 cout << 检查。

0 投票
2 回答
236 浏览

c++ - C++ 设置擦除入口问题

我在这里遇到了一个问题。我正在使用 C++ 多重集。这是测试文件。

我正在使用 while 循环和 ifstream (fin1) 从上面的测试文件中读取。

我在最后一个 else 语句中将所有名称插入到 myset 中(无论输赢/平局)。但我只需要那些获胜/平局的比赛的名字。

那些匹配失败的名字将不会包含在 myset 中。在上面的测试文件中,只有一场比赛输了(1-2),我想删除“Ben”。我怎样才能做到这一点?

我尝试使用 myset.erase(),但我不确定如何让它指向 Ben 并将其从 myset 中删除。

任何帮助深表感谢。谢谢。

0 投票
7 回答
13573 浏览

c++ - “multiset”和“multimap” - 有什么意义?

正如问题所述......我不明白multisets / multimaps 的意思。

那么,目的是什么?

0 投票
2 回答
2757 浏览

java - 从 Google Collections 中查找 Multiset 中的前 N ​​个元素?

Google Collections Multiset是一组元素,每个元素都有一个计数(即可能出现多次)。

我无法告诉你我想要执行以下多少次

  1. 制作直方图(确切地说是多重集)
  2. 从直方图中按count获取前N个元素

示例:前 10 个 URL(按 # 次提及),前 10 个标签(按 # 次应用),...

在给定 Google Collections Multiset 的情况下,执行 #2 的规范方法是什么?

是一篇关于它的博客文章,但该代码并不是我想要的。首先,它返回所有内容,而不仅仅是前 N 个。其次,它复制(是否可以避免复制?)。第三,我通常想要一个确定性排序,即如果计数相等,则为平局。其他尼特:它不是静态的,等等。

0 投票
1 回答
1357 浏览

sql - Oracle 多集、集合和记录

谁能向我解释为什么需要记录?我们不能在 PL/SQL 中使用循环执行相同的操作吗?还有什么时候可以使用多集记录查询?即在哪种情况下,哪一种是首选?

0 投票
5 回答
4795 浏览

algorithm - 是否有一种算法可以生成多重集的所有唯一循环排列?

我在做一些热心的编程时遇到了这个问题。问题可以表述如下:

对于多集 A,令 P(A) 表示 A 的所有可能排列的集合。P(A) 自然地划分为等价类的不相交子集,等价关系“可以通过循环移位相关联”。通过从每个等价类中生成一个成员来枚举所有这些等价类。

例如,考虑多重集 {0, 1, 1, 2}。排列“0112”和“1201”是唯一排列,但后者可以通过循环移动前者找到,反之亦然。所需的算法不应同时生成两者。

当然,蛮力方法是可能的:只需生成排列——不管循环重复如何——使用任何多集排列算法,并丢弃通过与先前结果比较发现的重复。然而,这在实践中往往效率低下。所需的算法应该需要最少的(如果不是零的话)簿记。

对此问题的任何见解都深表感谢。