Jim Langston wrote:
"JDT" <jdt_young@yahoo.com> wrote in message
news:vpEKh.9132$FG1.8910@newssvr27.news.prodigy.net...
red floyd wrote:
red floyd wrote:
JDT wrote:
red floyd wrote:
I think that you can use std::reverse_iterator with a pointer. See
24.1.1
typedef std::reverse_iterator<float *> rfloat_iter;
rfloat_iter p =
std::find_if(rfloat_iter(m+6), rfloat_iter(m),
std::bind2nd(greater_equal<float>(), 14.5));
Thanks for your help. First of all, what do you mean by 24.1.1?
Section 24.1.1 of the ISO C++ Standard (ISO/IEC 14882:2003).
I am testing your code. To check if find_if finds something, should I
use "p == rfloat_iter(m+6)" or "p == rfloat_iter(m)"?
The latter.
Besides, is the range between m+5 and m-1?
Sort of. See 24.1.1 for more details.
Your code has some compile errors. I appreciate if somebody can show
me what's the correct syntax (because I am not familiar with this
regard).
You need to #include <iterator>
I'm not surprised, I wrote it off the top of my head. I'm sure that
one of the other more knowledgeable types here can help you more than
me.
Also, as a matter of etiquette, please try not to top-post (posting all
your text above what you're replying to) -- it's frowned on in this
newsgroup. Instead, intersperse your replies with the text you're
referring to (as I did here), or after the text.
you might try this:
#include <iterator>
typedef std::reverse_iterator<float *> rfloat_iter;
const rfloat_iter rbegin = rfloat_iter(m+6);
const rfloat_iter rend = rfloat_iter(m);
rfloat_iter p =
std::find_if(rbegin, rend,
std::bind2nd(std::greater_equal<float>(),
14.5));
if (p == r_end)
/* not found */;
Hi Red,
The compiler doesn't like the following line so the typedef statement
fails:
reverse_iterator<float *>
Thanks for your help.
Tony
I *think*, but am not positive, he meant something like:
std::vector<float*>::reverse_iterator
No, he did not: the whole point is to turn pointers (used as iterators into
a raw array) into reverse_iterators into that same array. There is no
vector in any of this.
To the OP:
The following (which is the code from red floyd) compiles on g++ and Comeau.
#include <iterator>
#include <algorithm>
#include <functional>
typedef std::reverse_iterator<float *> rfloat_iter;
int main ( void ) {
float m[6];
const rfloat_iter rbegin = rfloat_iter(m+6);
const rfloat_iter rend = rfloat_iter(m);
rfloat_iter p =
std::find_if(rbegin, rend,
std::bind2nd(std::greater_equal<float>(),
14.5));
}
If you still can't get the code to compile, please post a short but complete
program that demonstrates the problem.
Thanks, Kai-Uwe. I suspect the OP's problem is that he didn't put the