Angus wrote:
Quote:
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"?
Quote:
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?
Quote:
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