On Wed, May 13, 2009 at 03:28, Louis Lavery
Scott McMurray wrote:
The three-iterators part was somewhat handwaved-over as well. Take this bit of current code, for example:
auto i = find(c.begin(), c.end(), some_pred()); rotate(c.begin(), i, c.end());
This is just a guess, but I'd be disappointed if it's not something like this...
Range const r1... // r1 = [b,e)
Range const r2 = find(r1,pred); // r2 = [i,e)
Range const r3 = r1 - r2; // r3 = [b,i)
Range const rot = r2 + r3; // rot = [i,e) + [b,i)
Well, op+ is the Chain he mentions on slide 38. But how would you implement the op-? I don't see how a - b could possibly be efficient with a list range, for example, since the ranges need not overlap, and one could be a subrange of the other. And the whole file copy example is strange, too, since programs do drastically different things. I sure wouldn't call the program on slide 16 a "file copy" as is implied by the previous slide. Especially since file copy is just int main() { return (std::cout << std::cin.rdbuf()).fail(); } BTW, has anyone ever actually wanted to do the inter-container partial sort of which the presentation is so proud (slide 42)? I'm not sure why I'd have the same data set in precisely two containers. (The Zero-One-Infinity rule comes to mind.)