C++ vector::shrink_to_fit() 函式



在學習 shrink_to_fit() 函式之前,讓我們先了解這兩個術語:

  • 容量 (Capacity) − capacity() 函式是一個內建函式,它返回向量的當前儲存空間分配,以元素數表示。此容量不一定等於向量的 size。
  • 大小 (Size) − size() 函式用於返回向量容器的大小或容器中元素的數量。capacity() 指示向量當前正在使用的記憶體量。

shrink_to_fit() 函式指示向量容器將其容量縮小到其大小。換句話說,容量將等於向量容器中包含的實際元素數量。

語法

以下是 C++ vector::shrink_to_fit() 函式的語法:

void shrink_to_fit();

引數

它不接受任何引數。

示例 1

讓我們考慮以下示例,我們將使用 shrink_to_fit() 函式。

#include <iostream>
#include <vector>
using namespace std;

int main(void) {
   vector<int> v(128);
   cout << "Initial capacity = " << v.capacity() << endl;
   v.resize(25);
   cout << "Capacity after resize = " << v.capacity() << endl;
   v.shrink_to_fit();
   cout << "Capacity after shrink_to_fit = " << v.capacity() << endl;
   return 0;
}

輸出

編譯並執行上述程式後,將產生以下結果:

Initial capacity = 128
Capacity after resize = 128
Capacity after shrink_to_fit = 25

示例 2

考慮另一種情況,我們將使用字串型別並應用 shrink_to_fit() 函式。

#include <iostream>
#include <vector>
using namespace std;

int main(void) {
   vector<string> myvector(50);
   cout << "Initial capacity = " << myvector.capacity() << endl;
   myvector.resize(13);
   cout << "Capacity after resize = " << myvector.capacity() << endl;
   myvector.shrink_to_fit();
   cout << "Capacity after shrink_to_fit = " << myvector.capacity() << endl;
   return 0;
}

輸出

執行上述程式後,將產生以下結果:

Initial capacity = 50
Capacity after resize = 50
Capacity after shrink_to_fit = 13

示例 3

在以下示例中,我們將使用 push_back() 函式插入值,然後應用 shrink_to_fit() 函式。

#include <iostream>
#include <vector>
using namespace std;

void print_vector(vector<int> myvector){
   for(int x: myvector)
      cout << x << " ";
}
int main(){
   vector<int> myvector;
   myvector.push_back(11);
   myvector.push_back(22);
   myvector.push_back(33);
   cout << "Actual vector: ";
   print_vector(myvector);
   cout << endl;
   cout << "Capacity of vector is: " << myvector.capacity()<<endl;
   myvector.resize(2);
   cout << "After Resize(2): ";
   print_vector(myvector);
   cout << endl;
   cout << "Capacity of vector is: " << myvector.capacity()<<endl;
   myvector.shrink_to_fit(); 
   cout << "after using shrink_to_fit() fuction vector capacity is: "<<myvector.capacity();
   return 0;
}

輸出

執行上述程式後,將產生以下結果:

Actual vector: 11 22 33 
Capacity of vector is: 4
After Resize(2): 11 22 
Capacity of vector is: 4
after using shrink_to_fit() fuction vector capacity is: 2
廣告