如何检查元素是否在数组中或计数特定元素的发生情况?
我知道我自己也能破解:
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()和my contains(),结果发现contains更快。奇怪但却是真的。
发布于 2013-02-18 15:02:05
计数见:std.algorithm.count。
用于contains:std.algorithm.canFind。对于排序数组,可以使用SortedRange (contains方法使用二进制搜索)。
https://stackoverflow.com/questions/14939060
复制相似问题