我应该使用什么Phobos算法来检查范围内的所有元素是否相等?我查看了std.algorithm
,我找到的最近的是equal
,但它需要两个范围作为参数。我也找不到一种方法来应用reduce
来解决这个问题。
答案 0 :(得分:6)
很好,亚当。还有一些可能性:
foo.empty || foo.equal(repeat(foo.front, foo.length))
或
foo.empty || repeat(foo.front).startsWith(foo)
或
foo.findAdjacent!("a != b").empty
答案 1 :(得分: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 */ }
}
这里的逻辑是如果它们都相等,那么它应该不能够找到与第一项不相等的项目。
安德烈的回答有几个选择!