- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道如何 thrust::set_intersection
有效,但从我的测试结果来看,我对这个函数的作用更加困惑。
举几个例子:
const int size1 = 5;
const int size2 = 5;
int A1[size1] = { 2, 3, 4, 5, 6 };
int A2[size2] = { 1, 2, 3, 4, 5 };
int *result = new int[1000];
int *result_end = thrust::set_intersection(A1, A1 + size1, A2, A2 + size2, result, thrust::less<int>());
返回 2, 3, 4, 5
thrust::equal_to<int>()
返回 2, 3, 4, 5, 6
thrust::greater<int>()
什么都不返回
我明白什么是默认set_intersection
确实并且我同意结果,但是对于任何其他示例我完全迷失了结果的来源?或者它是如何计算的?
是否知道该算法的工作原理?谁能解释一下?
编辑:
我的目标是给定 2 组元组(假设大小为 2):
A={(1, 1), (2, 2), (3, 3)}
B={(0, 2), (2, 2), (3, 3)}
所以我想在像 >< 这样的元组上定义 on 运算符,它返回满足运算符的所有元素:
><
定义为 a.first > b.first && a.second < b.second
所以答案只有 A[0] 和 B[0]。
所以你不能用set_intersection
来实现这个对吧?
编辑答案:没关系,我找到了答案here根据这些规则,此类运算符将不是“严格弱排序”运算符。
最佳答案
需要根据最后一个参数、比较器对两个输入集进行排序。
在第一个示例中,函数正常运行。
集合未根据 thrust::greater<int>()
排序.由于不满足先决条件,该功能无法完成其工作。
thrust::equal_to<int>()
甚至不是有效的比较器。
关于c++ - 推力 set_intersection 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075778/
我认为此处描述的 set_intersection STL 函数:http://www.cplusplus.com/reference/algorithm/set_intersection/在数学意义
使用 中的功能时, 通常有一个额外的参数来自定义比较。但是我不太明白关于参数的描述(Documentation of set_intersection)。 Binary function that
有什么方法可以对两种不同类型的集合执行 std::set_intersection 吗? 我有两套: std::set l_set1; std::set l_set2; 我可以为它们定义一些比较器来检
这个问题在这里已经有了答案: std::back_inserter for a std::set? (2 个答案) 关闭 2 年前。 是否可以将 std::set_intersection 或其他
我正在编写一个代码,根据对象的 ID 将两个对象 vector 相交。我收到运行时错误。我试图找出问题所在,但不知道为什么?你能帮我吗? #include #include #include u
struct Cord { int x_cord; int y_cord; Cord(int x = 0,int y = 0):x_cord(x
我想找到两张 map 之间的交点。我的 map 有结构 map , 其中line是一个结构。问题是当我使用 set_intersection为了执行交集,我得到了图像中表示的以下错误。 下面是我的代码
我需要获取两个 vector 之间的交集列表。在我的例子中, vector 是用户类型的 vector 。所以为了获得封装的数字,我必须使用比较器函数。 我还希望能够获得与偏移量的交集。例如,给定两个
我正在阅读有关 set_intersection 的内容,它似乎期望用户提前分配正确数量的空间(或更多),但这不是很奇怪吗?在 C++ 中,您经常使用 std::vector 动态分配空间。为什么 s
std::set m{1,2, 4}; std::set n{2,3, 4}; std::set mn; std::set::iterator it; it=set_intersection(m.be
This question建议使用 std::set_intersection 来查找两个数组的交集。使用 std::find 不是同样有效吗? int a[5] = {1, 2, 3, 4, 5};
我有一个类有两个属性: set ens1_; set ens2_; 现在,我有一个方法可以找到这两个集合之间的交集。这是我在我的方法中写的: set ens; set::iterator it;
我想知道如何 thrust::set_intersection有效,但从我的测试结果来看,我对这个函数的作用更加困惑。 举几个例子: const int size1 = 5; const int si
我有一个简单的要求,我需要从另一个 vector 中的字符串主列表中找到一个 vector 中字符串的出现。一开始我可以很容易地做到这一点: vector custom_list; set maste
我在尝试理解使用自定义比较器时 std::set_intersection 的语法。我正在尝试获取集合 one 和 two 的交集,这将导致集合 (intersect) 仅包含元素 f2. 我得到错误
我知道这些命令适用于两组。 是否有任何简单快速的方法可以为超过两组的情况执行此操作。 我想我可以为此使用某种循环,但也许有更好的方法。 谢谢 最佳答案 对于集合并集,如果要查看 M 个集合中哪个集合的
大家好:)我想创建一个个人集合类并重载运算符/=,就我的类而言,该运算符应该用于获取两个集合的插值。我收到以下错误: 错误:分配只读位置 '__result.std::_Rb_tree_const_i
下面代码的复杂度是多少? set S1, S2, ans; set_intersection(S1.begin(), S1.end(), S2.begin(), S2.end(), inserter(
我想知道标准库中是否有任何工具可以同时计算两个排序范围之间的交集和差集。带有以下签名的东西: template Output3 decompose_sets (Input1 first1, Inpu
std::set_intersection允许我通过将元素输出到 输出迭代器 来检索两个 std::set 实例之间的所有共同元素。在我的特定情况下,我只对检查两个集合是否有任何共同元素感兴趣。 我目
我是一名优秀的程序员,十分优秀!