问题标签 [set-intersection]

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 投票
2 回答
399 浏览

java - 当找到几个集合的交集时,使用retainAll() 是最快的顺序

我试图找到三个不同大小的哈希集的交集。通过更改集合相交的顺序,可以找到相交的速度是否有任何差异。示例程序如下:

0 投票
1 回答
103 浏览

r - 交易数据

我有一个包含购买数据的数据集,我一直在试图弄清楚一些事情。在开始之前,我的数据如下所示:

上述变量依次是客户 ID 号、交易日期、一天中的时间、销售金额和产品编号。我遇到的问题是 NDS_AMT 的负值。如果值为负,我需要检查是否有相应的购买,如果有,那么负值可以保留。如果没有相应的购买,那么我需要从我的数据中删除该记录。例如,需要删除倒数第二个记录,因为它是负数,并且同一天没有相应的购买。第二天购买了相同的产品,但由于它们是在两次不同的访问中,因此它们不能算作相应的购买。

我尝试过思考如何做到这一点,并考虑过嵌入的应用函数、相交函数或重复函数,但不管是什么函数,我都无法掌握如何编写代码。任何帮助将不胜感激。

编辑:根据 Henrik 的要求,我已为具有负 NDS_AMT 的新客户的数据添加了四个新行,其中记录保留在数据中。“对应购买”的条件是 CUST_ID、CI2_TRANS_DT、HR_SID 和 PROD_NUM 的值都必须与 NDS_AMT 小于 0 的记录匹配。

0 投票
1 回答
274 浏览

javascript - 范围的差异

如果我有以下数组,每个元素代表整数范围对:

我正在使用此代码计算交集

我还需要计算差异(所有值 0..1114111 除了上面相交的范围)。

这样做的有效方法是什么?

0 投票
5 回答
6897 浏览

r - 在 R 中向维恩图添加百分比

我正在尝试为我的维恩图的每个部分添加百分比。我尝试使用粘贴将圆圈标题与百分比连接起来。然而,不幸的是,这并不完全有效,因为它只提供每个独立组的百分比,而不提供每个交叉点的百分比,因为交叉点没有标题。理想情况下,我希望百分比在圆圈内。例如,我希望中间的三重交叉点(工作、学习、娱乐)表示“83, 20.54%”,而不是现在表示的“83”。

以下是我正在使用的代码的基本示例:

0 投票
1 回答
139 浏览

redis - Intersecting zset and set not working in Redis

I have the following two sets and I'm trying to intersect them and store the result:

You can see "judy_1" is present in both the set and the zset (w/the associated score of 137967). I want to intersect the "out2" and "dateset" to be left with "judy_1" and score.

I attempt to perform this and store the result in "result", but it's returning an empty set.

Any help is greatly appreciated!

0 投票
2 回答
25303 浏览

arrays - PostgreSQL检查数组是否包含左侧数组中的任何元素

我知道在 PostgreSQL 中你可以运行如下查询:

SELECT (1 = ANY('{1,3,4,7}'::int[])) AS result检查右侧数组是否包含元素1。我想知道是否有一种简单的方法可以检查右侧数组是否包含左侧数组中的任何元素。就像是:

SELECT ('{2,3}'::int[] = ANY('{1,3,4,7}'::int[])) AS result

有没有一种简单的方法可以做到这一点,而无需自己迭代左手循环?

0 投票
3 回答
2318 浏览

c++ - 无法将 std::set_intersection 应用于具有公共字段的不同类型的结构

我正在尝试使用std::set_intersection在具有共同绑定“名称”字段的两种完全不同类型的数据结构之间查找共同元素。

我在这里查看了以下输入链接描述,但它似乎迫使我在我试图避免的 2 种不同结构类型之间进行自定义转换(因为这些类型来自第 3 方)

下面的代码片段显示了我想要实现的目标。

我正在使用 Visual Studio 2013 来编译上面的代码,但是上面的代码会吐出大量错误,如下所示。通读std::set_intersection我在将兼容的StrictWeakOrdering comp最后一个参数放在一起时遇到问题。理想情况下,我希望将其实现为一次性 lambda。

1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\algorithm(3591): 错误 C2664: 'bool (__vectorcall *)(const main::StructA &,const main::StructB &)' : 无法将参数 1 从 'main::StructB' 转换为 'const main::StructA &' 1>
原因:无法从 'main::StructB' 转换为 'const main::StructA' 1> 没有用户定义的转换可以执行此转换的可用运算符,或者无法调用该运算符 1>
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\algorithm(3625) :请参阅对函数模板实例化的参考 '_OutIt std:: _Set_intersection<_InIt1,_InIt2,_OutIt,_Pr>(_InIt1,_InIt1,_InIt2,_InIt2,_OutIt,_Pr)' 正在编译 1> 与 1> [ 1>
_OutIt=std::back_insert_iterator>> 1> , _InIt1=main::StructA * 1> ,
_InIt2=main::StructB * 1> , _Pr=main:: 1> ] 1> C:\Program Files (x86)\ Microsoft Visual Studio 12.0\VC\include\algorithm(3654) :请参阅正在编译的函数模板实例化 '_OutIt std::_Set_intersection2(_InIt1,_InIt1,_InIt2,_InIt2,_OutIt,_Pr,std::true_type)' 的参考 1> 1> [ 1>
_OutIt=std::back_insert_iterator>> 1> , _Pr=main:: 1> , _InIt1=main::StructA * 1> ,
_InIt2=main::StructB * 1> ] 1> ....\src\dlf\main.cpp(111) : 参见函数模板实例化 '_OutIt std::set_intersection>>,std::_Vector_iterator>>, std::back_insert_iterator>>,main::>(_InIt1,_InIt1,_InIt2,_InIt2,_OutIt,_Pr)' 正在编译 1> 与 1> [ 1>
_OutIt=std::back_insert_iterator>> 1> , _Ty=main: :StructA 1> ,
_InIt1=std::_Vector_iterator>> 1> ,
_InIt2=std::_Vector_iterator>> 1> , _Pr=main:: 1> ]

我还尝试使用自定义比较器结构进行比较,但错误更加令人困惑:

这导致以下详细错误输出。我希望避免自定义结构(因为我尝试使用的实际结构来自第 3 方)以将转换器从 StructA 转换为 StructB,反之亦然,有什么办法可以避免这种情况,只需要一些简单的 lambda实现两个相对简单的结构与一个公共字段之间的简单绑定?
提前致谢。

1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility(521): 错误 C2664: 'bool main::comparator::operator ()(const main::StructA &,const main: :StructB &) const' : 无法将参数 1 从 'main::StructA' 转换为 'const main::StructB &' 1> 原因:无法从 'main::StructA' 转换为 'const main::StructB' 1>没有可以执行此转换的用户定义转换运算符,或者无法调用该运算符 1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility(625) :请参阅函数模板的参考实例化 'bool std::_Debug_lt_pred<_Pr,main::StructA&,main::StructA&>(_Pr,_Ty1,_Ty2,std::_Dbfile_t,std::_Dbline_t)' 正在编译 1> 和 1>[1>
_Pr=main::comparator 1> , _Ty1=main::StructA & 1> , _Ty2=main::StructA & 1> ] 1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility (636) : 请参阅对函数模板实例化 'void std::_Debug_order2<_InIt,_Pr>(_FwdIt,_FwdIt,_Pr,std::_Dbfile_t,std::_Dbline_t,std::forward_iterator_tag)' 的引用 1> 与 1 > [ 1>
_InIt=std::_Vector_iterator>> 1> , _Pr=main::comparator 1> ,
_FwdIt=std::_Vector_iterator>> 1> ] 1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\algorithm(3649) :参见函数模板实例化的参考 'void std::_Debug_order<_InIt1 ,_Pr>(_InIt,_InIt,_Pr,std::_Dbfile_t,std::_Dbline_t)' 正在编译 1> 1> [ 1>
_InIt1=std::_Vector_iterator>> 1> , _Pr=main::comparator 1> ,
_InIt=std::_Vector_iterator>> 1> ] 1> ....\src\dlf\main.cpp(118) : 参见函数模板实例化 '_OutIt std::set_intersection>>,std::_Vector_iterator> >,std::back_insert_iterator>>,main::comparator>(_InIt1,_InIt1,_InIt2,_InIt2,_OutIt,_Pr)' 正在编译 1> 和 1>[1>
_OutIt=std::back_insert_iterator>> 1> , _Ty=main::StructA 1> ,
_InIt1=std::_Vector_iterator>> 1> ,
_InIt2=std::_Vector_iterator>> 1> , _Pr=main::comparator 1> ] 1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility(523): error C2664: 'bool main::comparator::operator ()(const main::StructA &,const main::StructB &) const' : 无法将参数 1 从 'main::StructA' 转换为 'const main::StructB &' 1> 原因: 无法从 'main::StructA' 转换为 'const main::StructB' 1> 没有可以执行此转换的用户定义转换运算符,或者无法调用该运算符 1>C:\Program Files (x86) \Microsoft Visual Studio 12.0\VC\include\xutility(521): 错误 C2664: 'bool main::comparator::operator ()(const main::StructA &,const main::StructB &) const':无法将参数 2 从 'main::StructB' 转换为 'const main::StructA &' 1> 原因:无法从 'main::StructB' 转换为 'const main::StructA' 1> 没有用户定义的转换运算符可以执行此转换的可用,或者无法调用运算符 1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility(625) :请参阅对函数模板实例化的参考 'bool std::_Debug_lt_pred <_Pr,main::StructB&,main::StructB&>(_Pr,_Ty1,_Ty2,std::_Dbfile_t,std::_Dbline_t)' 正在编译 1> 和 1> [ 1>没有可以执行此转换的用户定义转换运算符,或者无法调用该运算符 1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility(625) :请参阅函数模板的参考实例化 'bool std::_Debug_lt_pred<_Pr,main::StructB&,main::StructB&>(_Pr,_Ty1,_Ty2,std::_Dbfile_t,std::_Dbline_t)' 正在编译 1> 和 1> [ 1>没有可以执行此转换的用户定义转换运算符,或者无法调用该运算符 1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility(625) :请参阅函数模板的参考实例化 'bool std::_Debug_lt_pred<_Pr,main::StructB&,main::StructB&>(_Pr,_Ty1,_Ty2,std::_Dbfile_t,std::_Dbline_t)' 正在编译 1> 和 1> [ 1>_Dbline_t)' 正在编译 1> 与 1> [ 1>_Dbline_t)' 正在编译 1> 与 1> [ 1>
_Pr=main::comparator 1> , _Ty1=main::StructB & 1> , _Ty2=main::StructB & 1> ] 1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility (636) : 请参阅对函数模板实例化 'void std::_Debug_order2<_InIt,_Pr>(_FwdIt,_FwdIt,_Pr,std::_Dbfile_t,std::_Dbline_t,std::forward_iterator_tag)' 的引用 1> 与 1 > [ 1>
_InIt=std::_Vector_iterator>> 1> , _Pr=main::comparator 1> ,
_FwdIt=std::_Vector_iterator>> 1> ] 1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\algorithm(3650) :参见函数模板实例化参考 'void std::_Debug_order<_InIt2 ,_Pr>(_InIt,_InIt,_Pr,std::_Dbfile_t,std::_Dbline_t)' 正在编译 1> 1> [ 1>
_InIt2=std::_Vector_iterator>> 1> , _Pr=main::comparator 1> ,
_InIt=std::_Vector_iterator>> 1> ] 1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility(523): error C2664: 'bool main::comparator::operator () (const main::StructA &,const main::StructB &) const' : 无法将参数 2 从 'main::StructB' 转换为 'const main::StructA &' 1> 原因:无法从 'main::StructB 转换' to 'const main::StructA' 1> 没有可以执行此转换的用户定义转换运算符,或者无法调用该运算符

0 投票
2 回答
256 浏览

c - 2个链表的交集

我应该为 2 个链表的交集创建一个链表。我为此编写的代码在交集列表的末尾显示了一个额外的元素 -> '0'。

输入

输入列表 1 元素:

输入:20

继续?(y/n) 是

输入:30

继续?(y/n) 是

输入:40

继续?(y/n) 是

输入:60

继续?(y/n) n

输入列表 2 元素:

输入:10

继续?(y/n) 是

输入:30

继续?(y/n) 是

输入:50

继续?(y/n) 是

输入:60

继续?(y/n) n

输出

列表1:20 ->30 ->40 ->60

列表 2:10 ->30 ->50 ->60

交点:30 ->60 ->0

此时的问题

不。交集列表中的项目数 = 3

0 投票
3 回答
628 浏览

mysql - 查询以检查每个可能的配对组合之间的共性(交集)

我编写了一个程序来生成由从大量问题中提取的问题组合而成的测试。每个测试都有许多标准,只有当它们满足这些标准时,程序才会将它们保存到数据库中。

我编写的程序是为了确保问题的分布尽可能均匀,即,在生成问题组合时,算法优先考虑池中在先前迭代中被询问次数最少的问题。

我创建了一个表,test_questions基本上存储test_id每个测试的和另一个,使用每个测试的 n 行test_questions存储test_ids 及其对应question_id的 s(其中 n 是每个测试中的问题数)。

现在我将测试存储在数据库中,我想检查不同测试对之间问题的重叠是否在一定范围内,我认为我应该能够使用 SQL 来做到这一点。

使用自联接,我能够使用此查询来选择测试 3 和测试 5 常见的问题:

我能够从前 n (5) 次测试中生成每个可能的测试对组合:

我想做但迄今为止未能做的是将上述两个查询结合起来,以显示前 5 个测试的每个可能的配对组合——以及两个测试共有的问题数量。

我在这个SQL Fiddle创建了两个表的简化版本(带有随机数据)

注意:我使用 MySQL 作为我的 DBMS,但 SQL 应该与 ANSI 标准兼容。

编辑:我编写的用于生成测试的程序实际上生成的测试数量超过了我需要的测试数量,我只想比较前 n 个测试。在示例中,我添加了<= 5WHERE 条件来忽略额外的测试。

根据 Thorsten Kettner 的示例数据,澄清我在寻找什么:

结果将是:

0 投票
1 回答
829 浏览

c++ - 在 boost::geometry 中取凸包的交点

在多次尝试使用由于舍入问题导致异常异常的浮点数之后,我认为使用整数算术作为解决方法可以解决问题。但是,现在我遇到了完全相同的问题。

我正在尝试计算各种点集的凸包的交集:

这失败了boost::geometry::overlay_invalid_input_exception

凸包看起来像这样hull0hull1

船体 0 和船体 1

有什么我做错了吗?我真的不想自己实现计算凸包和交叉点,这似乎是很多不必要的容易出错的工作。