Re: using std::find on a std::vector<double>
red floyd wrote:
> Kai-Uwe Bux wrote:
>> Anonymous wrote:
>>
>>> I ahve a vector of doubles taht I need to extract values from. I was
>>> just about to use the STL find() algo, but I have a couple of questions:
>>>
>>> first: can you specify the tolerance threshold to match on doubles?
>>> second: if yes, how may this be done (i.e. how many one specify the
>>> tolerance threshold for comparing doubles?)
>>
>> Note that find() has two signatures: one that takes a value to be found
>> and one that takes a unary predicate instead. Use the later and provide a
>> functor:
>
> Isn't the second form find_if(), not find()?
My bad. I had the page from the standard on my screen right in front of me.
Clearly, I just can't read :-(
>>
>> class is_approximately {
>>
>> double x;
>>
>> public:
>>
>> is_approximately ( double what )
>> : x ( what )
>> {}
>>
>> bool operator() ( double y ) const {
>> // return true if y is near x.
>> }
>>
>> };
>>
>> Now you can do:
>>
>> find( whatever.begin(), whatever.end(), is_approximately( 0.5 ) );
So that would be:
find_if( whatever.begin(), whatever.end(), is_approximately( 0.5 ) );
Thanks
Kai-Uwe Bux
|