Re: some combination of std::distance/std::max_element ( ? )
ma740988 ha scritto:
Given a sequence with n elements. For instance:
double arr [ 6 ] = { 0., 2., 4., 5., 6., 7.}
I'll define - what I call 'test zones' . Within these test zones I'll
seach for _and_ store max values and position found.
For instance: Lets assume 2 test zones. This would equate to:
Zone 1 elements: 0., 2., 4
Zone 2 elements: 5., 6., 7
Max value - zone 1 = 4, location 2 ( element index)
Max value - zone 2 = 7, location 5 ( element index)
<snip>
At issue: I'm thinking some combination std::distance and
std::max_element would work better. Sample source on how to achieve
this greatly appreaciated.
Looks like a homework to me... ;)
---------
if(sequence1.size() >= t_zone)
{
typedef std::deque<double>::iterator iterator;
iterator it = sequence1.begin();
iterator end = sequence1.end() - (t_zone - 1);
for(; it < end; it += t_zone)
{
iterator max_it = std::max_element(it, it + t_zone);
mMap[max_it - sequence1.begin()] = *max_it;
}
}
---------
You don't need std::distance() because deque provides random iterators
so using binary "-" is just as good. If you want to stick to it, replace
max_it - sequence1.begin()
with
std::distance(sequence1.begin(), max_it)
Notice that if the sequence size is not a multiple of t_zone, the last
"partial" zone is not considered at all, as it was in your original
code.
HTH,
Ganesh
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]