Search
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.
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.

# Function `std.algorithm.comparison.among`

Find `value` among `values`, returning the 1-based index of the first matching value in `values`, or `0` if `value` is not among `values`. The predicate `pred` is used to compare values, and uses equality by default.

``` uint among(alias pred, Value, Values...) (   Value value,   Values values ) if (Values.length != 0); template among(values...) ; ```

NameDescription
among

## Parameters

NameDescription
pred The predicate used to compare the values.
value The value to search for.
values The values to compare the value to.

## Returns

0 if value was not found among the values, otherwise the index of the found value plus one is returned.

find and canFind for finding a value in a range.

## Example

``````assert(3.among(1, 42, 24, 3, 2));

if (auto pos = "bar".among("foo", "bar", "baz"))
writeln(pos); // 2
else
assert(false);

// 42 is larger than 24
writeln(42.among!((lhs, rhs) => lhs > rhs)(43, 24, 100)); // 2
``````

## Example

Alternatively, `values` can be passed at compile-time, allowing for a more efficient search, but one that only supports matching on equality:

``````assert(3.among!(2, 3, 4));
writeln("bar".among!("foo", "bar", "baz")); // 2
``````