使用 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 在相反类别中查找具有匹配属性的元素的算法的主要内容,如果未能解决你的问题,请参考以下文章