chris jefferson wrote:
This question comes up every so often, in "offical standard
speak", the
word "should" has a specific meaning, which is that an
implementation is
supposed to do something unless there is a good reason not to.
The reason that size() is O(n) is to allow some of the splice
functions
to be more efficient. Basically it's a tradeoff between fast
splicing or
fast size.
Note that empty() is O(1), as required by the standard, so if
thats what
you want, you should use that.
100% agreed. I want to add that this issue was recently debated
again in
the LWG reflector: thread starting from c++std-lib-15781 (*).
Paolo.
(*) Everyone can fetch archived messaged sending queries to
c++std-ping@accu.org (an empty one to learn about the whole thing).