如何检查元素是否在数组中或计算特定元素的出现次数?
我知道我可以自己破解:
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
更快。奇怪但真实。
答案 0 :(得分:1)
count 请参阅:std.algorithm.count
。
包含:std.algorithm.canFind
。对于排序数组,您可以使用SortedRange
(contains
方法使用二进制搜索)。