使用 STL 在相反类别中查找具有匹配属性的元素的算法

Posted

技术标签:

【中文标题】使用 STL 在相反类别中查找具有匹配属性的元素的算法【英文标题】:Algorithm to find elements with matching properties amongst opposite catgeories using STL 【发布时间】:2016-10-03 16:18:02 【问题描述】:

我有一个属于两个类别 A 和 B 的元素的列表。每个元素都有一个属性 P。要求是属性 P 不能对属于不同类别的任何两个元素具有相同的值。我们必须找到共享相同属性值并违反此规则的所有元素集。 使用 C++ STL/boost 库实现它的最简单方法是什么。我正在使用 gcc 4.8.3。所以任何需要 c++14 或更高版本的解决方案都行不通。

【问题讨论】:

您能否提供输入数据的小示例。很难假设您的测试数据。? idk 关于你的情况....但是当我处于类似情况时,我更喜欢std::unordered_set 而不是列表,这样就不会出现此类问题。 【参考方案1】:

对 P 上的列表进行排序。这会将具有相同 P 的所有元素放在一起。因此,您现在可以遍历列表,并且对于每个相邻的对,检查它们是否具有相同的 P 并且属于不同的类别。

O(n log n) 用于排序和 O(n) 遍历列表并检查。

【讨论】:

以上是关于使用 STL 在相反类别中查找具有匹配属性的元素的算法的主要内容,如果未能解决你的问题,请参考以下文章

查找是不是在列表中找到具有特定属性值的元素

查找最佳类别匹配的 SQL 查询

如何创建集合扩展以在具有属性的集合中查找唯一对象?

查找具有数据项属性的所有元素,无论元素类型或数据项值如何

使用 detox 通过 ID 测试查找元素 - React Native

在数组中查找匹配项