【发布时间】:2020-11-22 20:52:45
【问题描述】:
想象一下,我有一个容器 C 包含某种类型的元素 T 和一个谓词,用于确定任何两个 T 类型的变量是否“等价”。例如。如果T 是int,我可能有一个谓词eqv = [](int a, int b){ return a % 5 == b % 5; },这样两个整数在eqv 下是等价的,如果它们在除以五时具有相同的余数。
给定这样一个容器和一个谓词,是否有一些 STL 函数(例如来自 algorithm),我可以优雅地(即无需自己编写大量代码)确定 @987654330 下 C 的分区数@?
例如,如果eqv如上,C为std::vector<int>{1,2,3,6,7,8}我想得到结果3(因为等价类是{1,6}、{2,7}和{3,8})。
【问题讨论】: