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 ranges for equality, as defined by predicate pred
(which is ==
by default).
template equal(alias pred)
;
Contained Functions
Name | Description |
---|---|
equal | Compares two ranges for equality. The ranges may have
different element types, as long as pred(r1
evaluates to bool .
Performs Ο(min(r1 ) evaluations of pred .
|
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-2022 by the D Language Foundation | Page generated by ddox.