C++ unordered_map::load_factor() 函式



C++ 函式 std::unordered_map::load_factor() 用於返回無序對映或容器的負載因子。如果無序對映包含 0 個元素,則負載因子為 0。負載因子是無序對映中元素數量與桶數之比。

在這個 API 中,我們直接使用 std::unordered_map::load_factor() 函式計算容器的負載因子,因此無需計算元素數量與桶數之比。

負載因子的計算方法如下:

load_factor = um.size() / um.bucket_count()

語法

以下是 std::unordered_map::load_factor() 函式的語法。

float load_factor() const noexcept;

引數

此函式不接受任何引數。

返回值

此函式返回計算出的無序對映或容器的負載因子。

示例 1

在下面的示例中,我們使用 load_factor() 函式計算無序對映的負載因子。

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_map<char, int> um={{'A', 2}, {'B', 4}, {'C', 6}};
   cout << "load_factor of unordered_map = " << um.load_factor() << endl;
   return 0;
}

輸出

讓我們編譯並執行上面的程式,這將產生以下結果:

load_factor of unordered_map = 0.230769

示例 2

下面的示例中,我們將建立一個接受字串和整數型別值的對映,並應用 load_factor() 函式來計算當前對映的負載因子。

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_map<int, string> um;
   um[2]="john";
   um[4]="garav";
   um[3]="rakesh";
   cout << "load_factor of unordered_map = " << um.load_factor() << endl;
   return 0;
}

輸出

以下是上述程式碼的輸出:

load_factor of unordered_map = 0.230769

示例 3

讓我們來看下面的例子,我們將使用兩種不同的方法計算負載因子:一種是使用容器大小與桶數之比,另一種是使用 load_factor() 函式。

#include <iostream>
#include <unordered_map>
using namespace std;
int main(void) {
   unordered_map<int, int> um;
   cout<<"Size of map "<<um.size()<<endl;
   cout<<"Size of bucket "<<um.bucket_count()<<endl;
   unsigned l_factor = um.size()/um.bucket_count();
   cout << "load_factor of unordered_map = " << l_factor << endl;
   cout << "load_factor of unordered_map = " << um.load_factor() << endl;
   return 0;
}

輸出

上述程式碼的輸出如下:

Size of map 0
Size of bucket 1
load_factor of unordered_map = 0
load_factor of unordered_map = 0
廣告