Menu
Search
View source code
Display the source code in std/algorithm/setops.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.

# `std.algorithm.setops.SetIntersection/setIntersection` - multiple declarations

## Function setIntersection

Lazily computes the intersection of two or more input ranges `ranges`. The ranges are assumed to be sorted by `less`. The element types of the ranges must have a common type.

``` SetIntersection!(less,Rs) setIntersection(alias less, Rs...) (   Rs ranges ) if (Rs.length >= 2 && allSatisfy!(isInputRange, Rs) && !is(CommonType!(staticMap!(ElementType, Rs)) == void)); ```

In the case of multisets, the range with the minimum number of occurences of a given element, propagates the number of occurences of this element to the resulting range.

### Parameters

NameDescription
less Predicate the given ranges are sorted by.
ranges The ranges to compute the intersection for.

### Returns

A range containing the intersection of the given ranges.

### Example

``````import std.algorithm.comparison : equal;

// sets
int[] a = [ 1, 2, 4, 5, 7, 9 ];
int[] b = [ 0, 1, 2, 4, 7, 8 ];
int[] c = [ 0, 1, 4, 5, 7, 8 ];
assert(equal(setIntersection(a, a), a));
assert(equal(setIntersection(a, b), [1, 2, 4, 7]));
assert(equal(setIntersection(a, b, c), [1, 4, 7]));

// multisets
int[] d = [ 1, 1, 2, 2, 7, 7 ];
int[] e = [ 1, 1, 1, 7];
assert(equal(setIntersection(a, d), [1, 2, 7]));
assert(equal(setIntersection(d, e), [1, 1, 7]));
``````

## Struct SetIntersection

Lazily computes the intersection of two or more input ranges `ranges`. The ranges are assumed to be sorted by `less`. The element types of the ranges must have a common type.

``` struct SetIntersection(alias less, Rs...)    if (Rs.length >= 2 && allSatisfy!(isInputRange, Rs) && !is(CommonType!(staticMap!(ElementType, Rs)) == void)); ```

In the case of multisets, the range with the minimum number of occurences of a given element, propagates the number of occurences of this element to the resulting range.

### Constructors

NameDescription
`this` (input)

### Properties

NameTypeDescription
`empty`[get] `bool`
`front`[get] `ElementType`
`save`[get] `SetIntersection`

### Methods

NameDescription
`popFront` ()

### Parameters

NameDescription
less Predicate the given ranges are sorted by.
ranges The ranges to compute the intersection for.

### Returns

A range containing the intersection of the given ranges.

### Example

``````import std.algorithm.comparison : equal;

// sets
int[] a = [ 1, 2, 4, 5, 7, 9 ];
int[] b = [ 0, 1, 2, 4, 7, 8 ];
int[] c = [ 0, 1, 4, 5, 7, 8 ];
assert(equal(setIntersection(a, a), a));
assert(equal(setIntersection(a, b), [1, 2, 4, 7]));
assert(equal(setIntersection(a, b, c), [1, 4, 7]));

// multisets
int[] d = [ 1, 1, 2, 2, 7, 7 ];
int[] e = [ 1, 1, 1, 7];
assert(equal(setIntersection(a, d), [1, 2, 7]));
assert(equal(setIntersection(d, e), [1, 1, 7]));
``````