On Tue, 09 Apr 2013 18:09:07 -0400, Joseph Rushton Wakeling
<joseph.wakel...@webdrake.net> wrote:
On 04/09/2013 11:02 PM, Steven Schveighoffer wrote:
3. For your specific situation, add lastFront():
It's an interesting thought. I don't think it's ultimately the right
way to go
-- yes, my application rests strongly on finding the last value, but the
problem
is very simply that popFront kills the value _before_ finding out if the
range
is now empty.
Well here is another solution:
struct MySimulation(T)
{
T[] var;
T[] tmpvar;
T diff, convergence;
auto front() @property
{
return var;
}
bool empty() @property
{
return (diff < convergence);
}
void popFront()
{
tmpvar[] = var[];
// update values in var
// and calculate diff
if(empty)
{
var[] = tmpvar[]; // revert
var = null; // optional, detach from original array
}
}
}
You could also use alloca to avoid storing tmpvar as a struct member and
also avoid allocation.
-Steve