开发者

what is the capacity of an empty vector?

Looks like a stupid question. But comment to my answer to one of the SO question made me to think again.

[ comment says, capacity need not be zero for empty vector]

By default my answer 开发者_StackOverflow社区would be 0 as there are no elements inside vector. It makes sense to keep the capacity as 0 and on the first allocation it can be increased without any performance hits.

But standard does not say anything one this. ( I checked in Josuttis book as well).

Is it purely implementation specific? Does any STL vendor use some arbitrary number as capcity for the empty vector?

Any thoughts...


C++ Standard 23.2.4.2 only says that vector::capacity is

The total number of elements that the vector can hold without requiring reallocation.

That means that the actual value is fully implementation specific.


The capacity can be whatever the implementors feel is correct or necessary.

It should also be noted it's never "safe" to assume you know the current capacity() without a call to that function. If you reserve 10 elements, the implementor is of free to allocate one hundred if it so wants to. Or 11, 42 (preferred) or just 10.


For a quick scan of Google and bouncing off a few random forums (of generally unknown pedigree, so, yeah), it appears to be implementation specific.

Pretty much a non-issue since you can immediately change it with a call to reserve.


One can change capacity of vector by using resize() API on vector if one is sure of what data vector is going to store and that is implementation specific.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜