View source code
Display the source code in std/algorithm/comparison.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Template std.algorithm.comparison.equal
Compares two or more ranges for equality, as defined by predicate pred
(which is ==
by default).
template equal(alias pred)
;
Contained Functions
Name | Description |
---|---|
equal | Compares two or more ranges for equality. The ranges may have
different element types, as long as all are comparable by means of
the pred .
Performs Ο(min(rs[0] ) evaluations of pred . However, if
equal is invoked with the default predicate, the implementation may take the liberty
to use faster implementations that have the theoretical worst-case
Ο(max(rs[0] ).
|
Example
import std .algorithm .comparison : equal;
import std .math .operations : isClose;
int[4] a = [ 1, 2, 4, 3 ];
assert(!equal(a[], a[1..$]));
assert(equal(a[], a[]));
assert(equal!((a, b) => a == b)(a[], a[]));
// different types
double[4] b = [ 1.0, 2, 4, 3];
assert(!equal(a[], b[1..$]));
assert(equal(a[], b[]));
// predicated: ensure that two vectors are approximately equal
double[4] c = [ 1.0000000005, 2, 4, 3];
assert(equal!isClose(b[], c[]));
Example
Tip
equal
can itself be used as a predicate to other functions.
This can be very useful when the element type of a range is itself a
range. In particular, equal
can be its own predicate, allowing
range of range (of range...) comparisons.
import std .algorithm .comparison : equal;
import std .range : iota, chunks;
assert(equal!(equal!equal)(
[[[0, 1], [2, 3]], [[4, 5], [6, 7]]],
iota(0, 8) .chunks(2) .chunks(2)
));
Authors
License
Copyright © 1999-2024 by the D Language Foundation | Page generated by ddox.