Discussion:
Check if give an array is equal to first elements in another array
MachineCode via Digitalmars-d-learn
2014-10-16 04:35:12 UTC
Permalink
Is there one function in the Phobos library to check if give an
array is equal to first elements in another array? e.g, f(a, b)
the entire b array must match to first elements in a and then
a[0 .. b.length] == b
probably there's no such a function (but I wouldn't find bad if
there was) in the D's library so what's a good name (that'a
descriptive) to such a function?
if(a.length >= b1.length && a[0 .. b1.length] == b1) { ... }
if(a.length >= b2.length && a[0 .. b2.length] == b2) { ... }
since if bx.length < a.length is valid I can't remove all the
a.length >= bx.length checks otherwise I can have a range
violation error
thedeemon via Digitalmars-d-learn
2014-10-16 06:13:51 UTC
Permalink
Post by MachineCode via Digitalmars-d-learn
Is there one function in the Phobos library to check if give an
array is equal to first elements in another array?
auto n = min(a.length, b.length);
if (a[0..n] == b[0..n]) ...
Ali Çehreli via Digitalmars-d-learn
2014-10-16 06:49:30 UTC
Permalink
Is there one function in the Phobos library to check if give an array is
equal to first elements in another array? e.g, f(a, b) the entire b
array must match to first elements in a and then return true otherwise
a[0 .. b.length] == b
probably there's no such a function (but I wouldn't find bad if there
was) in the D's library so what's a good name (that'a descriptive) to
such a function?
if(a.length >= b1.length && a[0 .. b1.length] == b1) { ... }
if(a.length >= b2.length && a[0 .. b2.length] == b2) { ... }
since if bx.length < a.length is valid I can't remove all the a.length
= bx.length checks otherwise I can have a range violation error
import std.algorithm;

void main()
{
auto a = [ 1, 42, 100, 7 ];
auto b = [ 1, 42 ];
assert(a.startsWith(b));
}

Ali

Loading...