The find_if can work if you use a good smart pointer that uses value semantics for the comparison. Check out the following link: http://axter.com/smartptr The above smart pointer uses value semantics, so that the pointee is compated instead of the pointer address. Top ten member of C++ Expert Exchange. http://www.experts-exchange.com/Cplusplus