This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

N*log(N) doesn't exist (Re: [RFC] Vector (string?) growth...)


Matt Austern wrote:

I don't think that is a good suggestion. In fact, I don't think it is standard
conforming.


It's easy to prove that if you have a constant growth factor, i.e. if you're
using exponential growth, then adding one element is amortized
constant time, as required by the standard. That is, the number of
copies you perform when you add N elements at a time is O(N).

I want to add something about the Big-O notation vs real in-memory algorithms...


Perhaps I'm naive but I have really enjoyed a simple observation put forward by
James Kanze in that original thread: for a real computer and a real in memory
algorithm N*log(N) can be bounded by N*32 or N*64 at most, that is N multiplied
by a constant quite small! A linear algorithm :-O


Then, he also offered interesting real world examples about sorting algorithms,
for instance.


This is only to briefly remind that, after the basic conformance requirements,
there is *much* to do for real world in memory vectors and strings and so on...


Paolo.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]