计算向量中的元素或检查元素是否在D中的数组中

时间:2013-02-18 14:52:35

标签: arrays d

如何检查元素是否在数组中或计算特定元素的出现次数?

我知道我可以自己破解:

int main()
{
  int [] a = [1,2,3,4,3,4,5,6,6,3,3,3];
  assert(count(a,6) == 2);
  assert(contains(a,7) == false);
  return 0;
}

uint count(T)(T[] a, T t){
  uint cnt = 0;
  foreach(elem; a){
    if(elem == t) ++cnt;
  }
  return cnt;
}

bool contains(T)(T[] a, T t){
  foreach(elem; a){
    if(elem == t) return true;
  }
  return false;
}

但必须有“图书馆方式”来做到这一点!

编辑:我刚刚比较了std.algorithm的canFind()和我的contains(),事实证明,contains更快。奇怪但真实。

1 个答案:

答案 0 :(得分:1)

count 请参阅:std.algorithm.count

包含std.algorithm.canFind。对于排序数组,您可以使用SortedRangecontains方法使用二进制搜索)。