Does clearing a vector affect its capacity?

后端 未结 4 492
渐次进展
渐次进展 2020-12-03 13:26

I instantiate an std::vector foo(1000).

foo.size() is now 1000 and foo.capacity() is also 1000.

If I clear the vector

4条回答
  •  甜味超标
    2020-12-03 14:11

    No, it doesn't. The capacity of a vector never decreases. That isn't mandated by the standard but it's so both in standard library implementations of VC++ and g++. In order to set the capacity just enough to fit the size, use the famous swap trick

    vector().swap(foo);
    

    In C++11 standard, you can do it more explicitly:

    foo.shrink_to_fit();
    

提交回复
热议问题