我应该使用什么 Phobos 算法来检查一个范围内的所有元素是否相等?我看过了std.algorithm
,我发现最接近的是equal
,但它需要两个范围作为参数。我也找不到申请reduce
解决这个问题的方法。
问问题
137 次
2 回答
6
很好,亚当。还有几种可能:
foo.empty || foo.equal(repeat(foo.front, foo.length))
或者
foo.empty || repeat(foo.front).startsWith(foo)
或者
foo.findAdjacent!("a != b").empty
于 2013-10-10T10:04:08.413 回答
4
一种选择是使用 canFind:
import std.algorithm;
import std.range;
void main() {
int[] foo = [1,1,2];
if(!foo.empty) {
if(!canFind!"a != b"(foo, foo.front))
// they are equal
else
// not equal
} else { /* nothing to compare against */ }
}
这里的逻辑是如果它们都相等,那么它应该无法找到不等于第一个项目的项目。
安德烈的答案还有更多选择!
于 2013-10-08T21:31:42.430 回答