In general, who should do more work: popFront or front?

mw mingwu at gmail.com
Tue Jun 15 04:57:45 UTC 2021


On Tuesday, 15 June 2021 at 04:24:09 UTC, surlymoor wrote:
> All my custom range types perform all their meaningful work in 
> their respective popFront methods, in addition to its expected 
> source data iteration duties. The reason I do this is because I 
> swear I read in a github discussion that front is expected to 
> be O(1), and the only way I can think to achieve this is to 
> stash the front element of a range in a private field; popFront 
> would thus also set this field to a new value upon every call, 
> and front would forward to it. (Or front would be the cache 
> itself.)
> At the moment, I feel that as long as the stashed front element 
> isn't too "big" (For some definition of big, I guess.), that 
> built-in caching should be fine. But is this acceptable? What's 
> the best practice for determining which range member should 
> perform what work? (Other than iterating, of course.)

In English, `front` is a noun, `popFront` have a verb in it, so 
you know who should do more work :-)


More information about the Digitalmars-d-learn mailing list