范围内所有元素的平等

时间:2013-10-08 21:15:28

标签: algorithm range d equality

我应该使用什么Phobos算法来检查范围内的所有元素是否相等?我查看了std.algorithm,我找到的最近的是equal,但它需要两个范围作为参数。我也找不到一种方法来应用reduce来解决这个问题。

2 个答案:

答案 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 */ }
}

这里的逻辑是如果它们都相等,那么它应该能够找到与第一项不相等的项目。

安德烈的回答有几个选择!