Data Structures and Algorithms

# Hash Set vs Hash Map

## What is the difference between a hash set and a hash map?

Hash sets and hash maps are both data structures that provide fast insertion, deletion, and search operations, but they serve different purposes and have some keyÂ differences:

Purpose:

• Hash Set: A hash set is used to store a collection of unique elements. It provides a way to efficiently check the presence of an element and eliminate duplicates.
• Hash Map: A hash map, also known as a hash table or dictionary, is used to store key-value pairs. It allows you to associate a unique key with a corresponding value and provides fast retrieval of values based on their keys.

Element Structure:

• Hash Set: A hash set stores individual elements. Each element is unique, and there are no associated values or data attached to the elements.
• Hash Map: A hash map stores key-value pairs. Each key is unique, and it is associated with a corresponding value. The keys are used to access and retrieve the associated values.

Accessing Elements:

• Hash Set: In a hash set, you can check the presence of an element using theÂ find()Â orÂ count()Â member functions. You cannot directly access or modify elements in a hash set.
• Hash Map: In a hash map, you can access and modify values using their associated keys. TheÂ []Â operator or theÂ at()Â member function can be used to retrieve or modify the value associated with a specific key.

Ordering:

• Hash Set: The elements in a hash set are not stored in any particular order. The internal order of elements may change due to hash table rehashing or insertions and deletions.
• Hash Map: Like hash sets, the key-value pairs in a hash map are not stored in any particular order. The internal order may change due to hash table rehashing or insertions and deletions.

Here's an example that demonstrates the usage of a hash set and a hashÂ map:

#include <iostream>
#include <string>
#include <unordered_map>
#include <unordered_set>

int main() {
// Hash Set
std::unordered_set<std::string> uniqueWords;
uniqueWords.insert("apple");
uniqueWords.insert("banana");

// Duplicate, will be ignored
uniqueWords.insert("apple");

std::cout << "Hash Set:" << std::endl;
for (const auto& word : uniqueWords) {
std::cout << word << std::endl;
}

// Hash Map
std::unordered_map<std::string, int> wordCounts;
wordCounts["apple"] = 3;
wordCounts["banana"] = 2;
wordCounts["orange"] = 1;

std::cout << "\nHash Map:" << std::endl;
for (const auto& pair : wordCounts) {
std::cout << pair.first << ": "
<< pair.second << std::endl;
}
}
Hash Set:
apple
banana

Hash Map:
orange: 1
apple: 3
banana: 2

In this example, the hash set uniqueWords stores unique words, ignoring duplicates. The hash map wordCounts associates words with their counts, allowing easy retrieval and modification of the counts using the words asÂ keys.

Hash sets are useful when you need to efficiently check the presence of elements and eliminate duplicates, while hash maps are useful when you need to associate values with unique keys and perform fast retrieval and modification of those values based on theÂ keys.

This Question is from the Lesson:

### Data Structures and Algorithms

This lesson introduces the concept of data structures beyond arrays, and why we may want to use alternatives.

Answers to questions are automatically generated and may not have been reviewed.

This Question is from the Lesson:

### Data Structures and Algorithms

This lesson introduces the concept of data structures beyond arrays, and why we may want to use alternatives.

Part of the course:

## Professional C++

Comprehensive course covering advanced concepts, and how to use them on large-scale projects.

Free, unlimited access

### This course includes:

• 124 Lessons
• 550+ Code Samples
• 96% Positive Reviews
• Regularly Updated
• Help and FAQ
Free, Unlimited Access

### Professional C++

Comprehensive course covering advanced concepts, and how to use them on large-scale projects.