📜  C++ STL中的vectorrink_to_fit()函数(1)

📅  最后修改于: 2023-12-03 14:39:52.866000             🧑  作者: Mango

C++ STL中的vector::shrink_to_fit()函数

shrink_to_fit()是一个C++ STL中的vector成员函数,该函数的作用是将vector的内存空间调整到最小,以减小空间的占用。在使用vector过程中,由于vector会自动进行动态内存分配和释放,会导致vector的容量一直保持在不断增长的状态,但并不是每次都需要这么多容量,而且不合理的内存占用也会影响程序的性能。

因此,shrink_to_fit()函数的主要作用就是将预留内存空间的大小缩小至正好能够容纳已经存储的元素的大小。这样可以减轻vector的内存负担,避免浪费内存。

函数定义

shrink_to_fit()函数的函数原型如下:

void shrink_to_fit();
函数参数

shrink_to_fit()是一个无参函数,没有输入参数。

函数返回值

shrink_to_fit()函数没有返回值,它只是将vector的内存空间进行了调整。

代码示例

下面是一个使用shrink_to_fit()函数的示例。在该示例中,我们首先创建一个包含10个元素的vector,并将其容量调整至20。接着,我们向其中再添加5个元素,最后再调用shrink_to_fit()函数,查看vector的内存空间是否被释放。

#include <iostream>
#include <vector>

int main()
{
    std::vector<int> myvector(10);
    std::cout << "Vector size: " << myvector.size() << std::endl; 
    std::cout << "Vector capacity before: " << myvector.capacity() << std::endl;
    myvector.reserve(20);   
    std::cout << "Vector capacity after: " << myvector.capacity() << std::endl;

    for (int i=0; i<5; i++)
        myvector.push_back(i);

    std::cout << "Vector size after push_back: " << myvector.size() << std::endl;
    std::cout << "Vector capacity after push_back: " << myvector.capacity() << std::endl;

    myvector.shrink_to_fit();
    std::cout << "Vector capacity after shrink_to_fit: " << myvector.capacity() << std::endl;

    return 0;
}

运行结果:

Vector size: 10
Vector capacity before: 10
Vector capacity after: 20
Vector size after push_back: 15
Vector capacity after push_back: 20
Vector capacity after shrink_to_fit: 15

从上述输出结果可以看出,在调用shrink_to_fit()函数之前,vector的容量为20,但实际只使用了15个元素的内存空间。而在调用了shrink_to_fit()函数之后,vector的内存空间被缩小至只包含15个元素,避免了内存的浪费。

注意事项
  • shrink_to_fit()函数不会改变vector的元素个数,只会改变vector的内存空间大小。

  • 在使用shrink_to_fit()函数之前,请确保已经完成了对vector的所有操作,以防止在缩小容量后造成不必要的内存分配和释放操作。