Để giải quyết vấn đề này, thật thuận tiện khi sử dụng hàm băm trả về một giá trị duy nhất cho mỗi hàng (băm).
C++11 có một tiện ích tích hợp sẵn để lấy hàm băm: hàm băm.  
Trong tương lai, để đếm số lần băm, tốt hơn là sử dụng bảng băm unordered_map, cũng xuất hiện trong C++ 11. Bạn có thể tìm hiểu thêm về cách sử dụng bản đồ trong khóa học Cấu trúc dữ liệu động -> Mảng kết hợp: bản đồ.

Ví dụ về cách lấy hàm băm từ chuỗi "test":

hash<string> hash_fn;
size_t str_hash = hash_fn("test" );
cout<<str_hash;


Kết quả sẽ là: "2949673445", do đó, từ mỗi chuỗi duy nhất, bạn có thể nhận được một hàm băm duy nhất có thể được sử dụng làm khóa trong  unordered_map.

Băm chuỗi là biểu diễn của một chuỗi dưới dạng một số, duy nhất (chúng ta sẽ giả định rằng khả năng xảy ra xung đột là không đáng kể) cho mỗi chuỗi. Điều này cho phép bạn lưu trữ bất kỳ dữ liệu quan trọng nào (như mật khẩu) trong cơ sở dữ liệu không phải dưới dạng chuỗi mà dưới dạng số. Điều này cho phép bạn bảo vệ mật khẩu nếu kẻ tấn công giành được quyền truy cập vào cơ sở dữ liệu mật khẩu, bởi vì anh ta sẽ không tự lấy mật khẩu mà chỉ lấy biểu diễn số của chúng và gần như không thể lấy được chuỗi bằng hàm băm của nó (đặc biệt là nếu không biết thuật toán băm ). 
Băm đa thức thường được sử dụng nhiều nhất trong các bài toán cạnh tranh lập trình.
Một trong những cách tốt nhất để xác định hàm băm của chuỗi S như sau:
h(S)  =  S[0]  +  S[1] * P  +  S[2] * P^2  +  S[3] * P^3  +  ...  +  S[N] * P^N