|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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?) |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
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: 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 ) ); Best Kai-Uwe Bux |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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()? > > 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 ) ); > > > > Best > > Kai-Uwe Bux |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Another option would also be std::find_first_of.
Regards Klaas |
|
![]() |
| Outils de la discussion | |
|
|