From b424294578ebc0a712d456e32acefd1bbd2bdb40 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 20:09:17 +0000 Subject: [PATCH 1/4] Initial plan From 659b23e1e30de48a4296f9c363d319243badfaa2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 20:14:38 +0000 Subject: [PATCH 2/4] Add C++ unordered_set rehash() term entry Co-authored-by: ylevental <17479201+ylevental@users.noreply.github.com> --- .../unordered-set/terms/rehash/rehash.md | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 content/cpp/concepts/unordered-set/terms/rehash/rehash.md diff --git a/content/cpp/concepts/unordered-set/terms/rehash/rehash.md b/content/cpp/concepts/unordered-set/terms/rehash/rehash.md new file mode 100644 index 00000000000..7f27721f4de --- /dev/null +++ b/content/cpp/concepts/unordered-set/terms/rehash/rehash.md @@ -0,0 +1,108 @@ +--- +Title: 'rehash()' +Description: 'Sets the number of buckets in an unordered_set to a specified value or more, reorganizing the elements in the container.' +Subjects: + - 'Code Foundations' + - 'Computer Science' +Tags: + - 'Hash Maps' + - 'Sets' + - 'STL' +CatalogContent: + - 'learn-c-plus-plus' + - 'paths/computer-science' +--- + +The **`rehash()`** method sets the number of buckets in an [`unordered_set`](https://www.codecademy.com/resources/docs/cpp/unordered-set) to a specified value or more, causing the container to reorganize its elements according to their hash values. This can help optimize the performance of the container by reducing the load factor and the number of hash collisions. + +The new bucket count will be at least equal to the specified value. If the requested bucket count is smaller than the current number of buckets required to maintain the load factor, the function may have no effect. + +## Syntax + +```pseudo +unordered_set_name.rehash(n); +``` + +**Parameters:** + +- `n`: The minimum number of buckets to set for the container. This is of type `size_type`. + +**Return value:** + +This method does not return a value (`void`). + +## Example + +This example demonstrates using `.rehash()` to change the bucket count of an `unordered_set`: + +```cpp +#include +#include +using namespace std; + +int main() { + unordered_set numbers = {10, 20, 30, 40, 50}; + + cout << "Initial bucket count: " << numbers.bucket_count() << endl; + cout << "Number of elements: " << numbers.size() << endl; + cout << "Load factor: " << numbers.load_factor() << endl; + + // Increase the number of buckets + numbers.rehash(20); + + cout << "\nAfter rehash(20):" << endl; + cout << "New bucket count: " << numbers.bucket_count() << endl; + cout << "Number of elements: " << numbers.size() << endl; + cout << "Load factor: " << numbers.load_factor() << endl; + + return 0; +} +``` + +This example results in the following possible output: + +```shell +Initial bucket count: 7 +Number of elements: 5 +Load factor: 0.714286 + +After rehash(20): +New bucket count: 23 +Number of elements: 5 +Load factor: 0.217391 +``` + +> **Note:** The actual bucket counts may vary depending on the compiler and standard library implementation. + +## Codebyte Example + +In this example, the code demonstrates how `.rehash()` can be used to optimize an `unordered_set` before inserting a large number of elements, reducing the need for automatic rehashing: + +```codebyte/cpp +#include +#include +using namespace std; + +int main() { + unordered_set words; + + cout << "Initial bucket count: " << words.bucket_count() << endl; + + // Pre-allocate buckets for expected elements + words.rehash(100); + + cout << "Bucket count after rehash(100): " << words.bucket_count() << endl; + + // Insert elements + words.insert("apple"); + words.insert("banana"); + words.insert("cherry"); + words.insert("date"); + + cout << "Bucket count after insertions: " << words.bucket_count() << endl; + cout << "Current load factor: " << words.load_factor() << endl; + cout << "Max load factor: " << words.max_load_factor() << endl; + + return 0; +} +``` From e164575df100bc4086233b3fe49859fb7a80c73c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 20:16:49 +0000 Subject: [PATCH 3/4] Use explicit std:: prefix for consistency Co-authored-by: ylevental <17479201+ylevental@users.noreply.github.com> --- .../unordered-set/terms/rehash/rehash.md | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/content/cpp/concepts/unordered-set/terms/rehash/rehash.md b/content/cpp/concepts/unordered-set/terms/rehash/rehash.md index 7f27721f4de..ea5f7b931a6 100644 --- a/content/cpp/concepts/unordered-set/terms/rehash/rehash.md +++ b/content/cpp/concepts/unordered-set/terms/rehash/rehash.md @@ -33,27 +33,26 @@ This method does not return a value (`void`). ## Example -This example demonstrates using `.rehash()` to change the bucket count of an `unordered_set`: +This example demonstrates using `rehash()` to change the bucket count of an `unordered_set`: ```cpp #include #include -using namespace std; int main() { - unordered_set numbers = {10, 20, 30, 40, 50}; + std::unordered_set numbers = {10, 20, 30, 40, 50}; - cout << "Initial bucket count: " << numbers.bucket_count() << endl; - cout << "Number of elements: " << numbers.size() << endl; - cout << "Load factor: " << numbers.load_factor() << endl; + std::cout << "Initial bucket count: " << numbers.bucket_count() << "\n"; + std::cout << "Number of elements: " << numbers.size() << "\n"; + std::cout << "Load factor: " << numbers.load_factor() << "\n"; // Increase the number of buckets numbers.rehash(20); - cout << "\nAfter rehash(20):" << endl; - cout << "New bucket count: " << numbers.bucket_count() << endl; - cout << "Number of elements: " << numbers.size() << endl; - cout << "Load factor: " << numbers.load_factor() << endl; + std::cout << "\nAfter rehash(20):\n"; + std::cout << "New bucket count: " << numbers.bucket_count() << "\n"; + std::cout << "Number of elements: " << numbers.size() << "\n"; + std::cout << "Load factor: " << numbers.load_factor() << "\n"; return 0; } @@ -76,22 +75,22 @@ Load factor: 0.217391 ## Codebyte Example -In this example, the code demonstrates how `.rehash()` can be used to optimize an `unordered_set` before inserting a large number of elements, reducing the need for automatic rehashing: +In this example, the code demonstrates how `rehash()` can be used to optimize an `unordered_set` before inserting a large number of elements, reducing the need for automatic rehashing: ```codebyte/cpp #include #include -using namespace std; +#include int main() { - unordered_set words; + std::unordered_set words; - cout << "Initial bucket count: " << words.bucket_count() << endl; + std::cout << "Initial bucket count: " << words.bucket_count() << "\n"; // Pre-allocate buckets for expected elements words.rehash(100); - cout << "Bucket count after rehash(100): " << words.bucket_count() << endl; + std::cout << "Bucket count after rehash(100): " << words.bucket_count() << "\n"; // Insert elements words.insert("apple"); @@ -99,9 +98,9 @@ int main() { words.insert("cherry"); words.insert("date"); - cout << "Bucket count after insertions: " << words.bucket_count() << endl; - cout << "Current load factor: " << words.load_factor() << endl; - cout << "Max load factor: " << words.max_load_factor() << endl; + std::cout << "Bucket count after insertions: " << words.bucket_count() << "\n"; + std::cout << "Current load factor: " << words.load_factor() << "\n"; + std::cout << "Max load factor: " << words.max_load_factor() << "\n"; return 0; } From 3108f19cfd1fb215e71919ffd088c0a204745558 Mon Sep 17 00:00:00 2001 From: Yuval Levental Date: Fri, 5 Dec 2025 15:25:49 -0500 Subject: [PATCH 4/4] Update rehash.md