www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Searching for a T in a T[]

reply =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
Is there now algorithm (similar to `canFind`) that can search for 
a `T` in a `T[]`? Existing `canFind` only supports sub-sequence 
needles.

I'm aware of `std.string.indexOf` but that's only for strings.
Jun 22 2016
next sibling parent reply David Nadlinger <code klickverbot.at> writes:
On Wednesday, 22 June 2016 at 08:04:34 UTC, Nordlöw wrote:
 Is there now algorithm (similar to `canFind`) that can search 
 for a `T` in a `T[]`? Existing `canFind` only supports 
 sub-sequence needles.
What about http://dlang.org/phobos/std_algorithm_searching.html#.canFind.canFind.2? — David
Jun 22 2016
parent =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Wednesday, 22 June 2016 at 08:07:51 UTC, David Nadlinger wrote:
 What about 
 http://dlang.org/phobos/std_algorithm_searching.html#.canFind.canFind.2?
My mistake. The reason for the template error message was another than I though of. Thanks.
Jun 22 2016
prev sibling parent cym13 <cpicard openmailbox.org> writes:
On Wednesday, 22 June 2016 at 08:04:34 UTC, Nordlöw wrote:
 Is there now algorithm (similar to `canFind`) that can search 
 for a `T` in a `T[]`? Existing `canFind` only supports 
 sub-sequence needles.

 I'm aware of `std.string.indexOf` but that's only for strings.
I don't see why canFind isn't good enough for you, maybe I don't get what you want: void main(string[] args) { import std.algorithm: canFind; struct Coord { int x, y; } Coord[] list = [Coord(0, 0), Coord(3, 14), Coord(1, 2), Coord(4, 2)]; assert( list.canFind(Coord(3, 14))); assert( list.canFind(Coord(4, 2))); assert(!list.canFind(Coord(4, 3))); assert(!list.canFind(Coord(-1, 3))); }
Jun 22 2016