The OpenD Programming Language

SetDifference

Lazily computes the difference of r1 and r2. The two ranges are assumed to be sorted by less. The element types of the two ranges must have a common type.

More...

Constructors

this
this(R1 r1, R2 r2)

Members

Functions

popFront
void popFront()

Properties

empty
bool empty [@property getter]
front
auto ref front [@property getter]
save
typeof(this) save [@property getter]

Parameters

less

Predicate the given ranges are sorted by.

Return Value

A range of the difference of r1 and r2.

Detailed Description

In the case of multisets, considering that element a appears x times in r1 and y times and r2, the number of occurences of a in the resulting range is going to be x-y if x > y or 0 otherwise.

Examples

import std.algorithm.comparison : equal;
import std.range.primitives : isForwardRange;

//sets
int[] a = [ 1, 2, 4, 5, 7, 9 ];
int[] b = [ 0, 1, 2, 4, 7, 8 ];
assert(equal(setDifference(a, b), [5, 9]));
static assert(isForwardRange!(typeof(setDifference(a, b))));

// multisets
int[] x = [1, 1, 1, 2, 3];
int[] y = [1, 1, 2, 4, 5];
auto r = setDifference(x, y);
assert(equal(r, [1, 3]));
assert(setDifference(r, x).empty);

See Also

Meta