Angus wrote:
I am writing a sampling type program which takes a buffer, and picks
the middle of the buffer. But I need to take a bit out the middle
What does that mean "to take a bit out the middle"?
and
then take what is left (on both sides) and take the middle out of
these fragments.
And then what? When does it end, and what do you expect as the result
of that processing?
I have a function which takes a range, eg start, end and a samplesize
and calculates the range of the buffer to take for sampling. But of
course each time I call this function it creates two new start-end
ranges to again get the middle bit again. I have a size of sample so
when the middle bits reach the sample size I just stop.
How would I write something to achieve this? Should it be a recursive
function?
Yes, the recursion seems to fit right in.
template<class Iterator, class F>
void doSomethingWithTheMiddle(Iterator start, Iterator end, F f)
{
if (start != end) { // not an empty range
Iterator middle = start + (start - end)/2;
f(*middle);
doSomethingWithTheMiddle(start, middle);
doSomethingWithTheMiddle(middle, end);
}
}
The function above has a flaw -- it will recurse infinitely for a range
of length 1. You need to correct it. Hint: you need to add 1 addition
somewhere.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask