要素が配列内にあるかどうかを確認したり、特定の要素の出現回数を数えたりするにはどうすればよいですか?
私はそれを自分でハックできることを知っています:
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.algorithmcanFind()
と mycontains()
を比較したところ、そのcontains
方が高速であることがわかりました。奇妙ですが本当です。