On 19 Sep 2005, at 11:25, Akim Demaille wrote:

Also, just use the std::deque for stack. I think that std::stack will
not be able to look deeper than top, as is required by the parser.


Of course it can't.

Why is this of course?

That's why we used a dequeue from the start.

std::stack uses std::deque for implementation.

And std::deque is in the latest C++ revision written so that it does
not invoke copy constructors when expanding the stack, as it just
allocates a new chunk, leaving the old one intact.


Exactly.

Still, time permitting, using vector would be better.

I guess you will have to do some time profiling to figure this out. A typical compilers spends little time in the parsing anyway, so it probably does not matter, from the time point of view. One can also note that if one is using a deque is the C parser, it should work compiled as C++ also for semantic types with copy constructors. The compile C as C++ option is dead, though, I think, in view of past attempts. But I think, for example, LilyPond is using it.

  Hans Aberg




Reply via email to