导航菜单
首页 >  conserve和preserve和reserve的区别真题  > C++ vector中resize()和reserve()区别

C++ vector中resize()和reserve()区别

vector中resize 和 reserve区别resize 和 reserve区别1、reserve()避免多次不必要的扩容2、resize是改变容器的大小,且创建对象3、resize()和reserve()区别

resize 和 reserve区别 1、reserve()避免多次不必要的扩容 成员方法功能capacity()告诉我们当前 vector 容器总共可以容纳多少个元素。如果想知道当前 vector 容器有多少未被使用的存储空间,可以通过 capacity()-size() 得知。注意,如果 size() 和 capacity() 返回的值相同,则表明当前 vector 容器中没有可用存储空间了,这意味着,下一次向 vector 容器中添加新元素,将导致 vector 容器扩容。size()告诉我们当前 vector 容器中已经存有多少个元素,但仅通过此方法,无法得知 vector 容器有多少存储空间。reserve(n)强制 vector 容器的容量至少为 n。注意,如果 n 比当前 vector 容器的容量小,则该方法什么也不会做;反之如果 n 比当前 vector 容器的容量大,则 vector 容器就会扩容。

特征

reserve的作用是更改vector的容量(capacity),使vector至少可以容纳n个元素。

如果n大于vector当前的容量,reserve会对vector进行扩容。其他情况下都不会重新分配vector的存储空间reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。reserve()函数预分配出的空间没有被初始化,所以不可访问。

也就是说

reserve()函数和容器的capacity息息相关。调用reserve(n)后,若容器的capacity=n呢?capacity无变化。

实例说明

在main中

相关推荐: