问题标签 [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.
java - Java:获取对象的唯一属性(如哈希码,但防冲突)
我有一项任务,需要为集合中的每个对象生成唯一值。如果哈希码合约中不允许冲突,那么使用哈希码将是完美的。
一个想法:将每个对象的哈希码记录到一个多重集中。然后,使用哈希码作为唯一标识符,但如果该哈希码不止一次在集合中,则使用也不在集合中的不同值。但这感觉笨重和尴尬。
更好的想法?
这是我已经拥有的:
编辑:我想这最初并不清楚,但是 id 编号确实需要成为对象的函数,因为getVertexName(V)
会被多次调用,并且它期望对于相同的值V
,它会得到相同的结果。
此外,Vertex 类型是通用的。所以我不能对特定的类进行任何修改来解决这个问题。
list - 当您不需要保留顺序时,您可以编码到更少的位吗?
假设您有一个 32 位整数列表和一个多重集中的相同 32 位整数集合(允许重复成员的集合)
由于 Sets 不保留顺序,但 List 保留,这是否意味着我们可以用比 List 更少的位对 Multiset 进行编码?
如果是这样,您将如何编码 Multiset?
如果这是真的,还有哪些其他示例不需要保留顺序可以节省位?
注意,我只是以 32 位整数为例。数据类型在编码中是否重要?数据类型是否需要固定长度且具有可比性才能获得节省?
编辑
任何解决方案都应该适用于具有低重复和高重复的集合。很明显,仅通过简单地计算重复来对多集进行高重复编码非常容易,但是如果集合中没有重复,这会占用更多空间。
c# - .Net 有多重集的实现吗?
我正在寻找一个多重集的.Net 实现。谁能推荐一个好的?
(多重集或袋子是一个可以具有重复值的集合,您可以在其上进行集合操作:交集、差异等。例如,可以将购物车视为多重集,因为您可以多次出现相同的产品。)
c++ - 在 std::multiset (C++) 中协调 typedef 和结构
我不是专业的程序员,所以请不要犹豫,说明显而易见的。
我的目标是使用一个std::multiset
容器 ( typedef EventMultiSet
) 调用currentEvents
来组织一个类型的结构列表Event
,并让类的成员Host
偶尔将新Event
结构添加到currentEvents
. 这些结构应该按其成员之一时间排序。我不确定我想做的有多少是合法的。g++ 编译器报告(在“Host.h”中)“错误:'EventMultiSet' 尚未声明。” 这就是我正在做的事情:
主要问题
- 我应该在哪里包含 EventMultiSet typedef?
- 我的 EventMultiSet 指针明显有问题吗?
- 我的 Event 结构中的比较函数(理论上)可以吗?
非常感谢您提前。
c++ - Multiset 容器似乎停止排序
我会很感激帮助调试多集容器的一些奇怪行为。有时,容器似乎停止排序。这是一个罕见的错误,很长一段时间后仅在一些模拟中才明显,而且我缺乏想法。(我是一个业余程序员——欢迎各种建议。)
我的容器是一个std::multiset
包含Event
结构的容器:
结构Event
按其double time
成员排序:
该程序迭代通过将具有无序时间的事件添加到EventPQ currentEvents
然后按顺序拉出事件的周期。很少,在添加了一些事件之后(具有完全“合法”的时间),事件开始无序执行。
是什么导致事件无法正确排序?(或者什么会弄乱迭代器?)我已经检查了所有添加的事件时间都是合法的(即,都超过了当前的模拟时间),并且我还确认了错误不会发生,因为两个事件恰好被安排同时。
我很想就如何解决这个问题提出建议。
执行和添加事件的代码如下:
我应该补充一点,有时一个事件在执行时会从currentEvents
. 这是用
即使这段代码看起来不错,我也想知道其他可以检查发生了什么的方法——我目前正在使用很多 asserts() 和 cout << 检查。
c++ - C++ 设置擦除入口问题
我在这里遇到了一个问题。我正在使用 C++ 多重集。这是测试文件。
我正在使用 while 循环和 ifstream (fin1) 从上面的测试文件中读取。
我在最后一个 else 语句中将所有名称插入到 myset 中(无论输赢/平局)。但我只需要那些获胜/平局的比赛的名字。
那些匹配失败的名字将不会包含在 myset 中。在上面的测试文件中,只有一场比赛输了(1-2),我想删除“Ben”。我怎样才能做到这一点?
我尝试使用 myset.erase(),但我不确定如何让它指向 Ben 并将其从 myset 中删除。
任何帮助深表感谢。谢谢。
c++ - “multiset”和“multimap” - 有什么意义?
正如问题所述......我不明白multiset
s / multimap
s 的意思。
那么,目的是什么?
java - 从 Google Collections 中查找 Multiset 中的前 N 个元素?
Google Collections Multiset是一组元素,每个元素都有一个计数(即可能出现多次)。
我无法告诉你我想要执行以下多少次
- 制作直方图(确切地说是多重集)
- 从直方图中按count获取前N个元素
示例:前 10 个 URL(按 # 次提及),前 10 个标签(按 # 次应用),...
在给定 Google Collections Multiset 的情况下,执行 #2 的规范方法是什么?
这是一篇关于它的博客文章,但该代码并不是我想要的。首先,它返回所有内容,而不仅仅是前 N 个。其次,它复制(是否可以避免复制?)。第三,我通常想要一个确定性排序,即如果计数相等,则为平局。其他尼特:它不是静态的,等等。
sql - Oracle 多集、集合和记录
谁能向我解释为什么需要记录?我们不能在 PL/SQL 中使用循环执行相同的操作吗?还有什么时候可以使用多集记录查询?即在哪种情况下,哪一种是首选?
algorithm - 是否有一种算法可以生成多重集的所有唯一循环排列?
我在做一些热心的编程时遇到了这个问题。问题可以表述如下:
对于多集 A,令 P(A) 表示 A 的所有可能排列的集合。P(A) 自然地划分为等价类的不相交子集,等价关系“可以通过循环移位相关联”。通过从每个等价类中生成一个成员来枚举所有这些等价类。
例如,考虑多重集 {0, 1, 1, 2}。排列“0112”和“1201”是唯一排列,但后者可以通过循环移动前者找到,反之亦然。所需的算法不应同时生成两者。
当然,蛮力方法是可能的:只需生成排列——不管循环重复如何——使用任何多集排列算法,并丢弃通过与先前结果比较发现的重复。然而,这在实践中往往效率低下。所需的算法应该需要最少的(如果不是零的话)簿记。
对此问题的任何见解都深表感谢。