برای حل آن، استفاده از یک تابع هش که یک مقدار منحصر به فرد را برای هر ردیف (هش) برمی گرداند، راحت است.
C++11 دارای یک امکانات داخلی برای گرفتن هش است: هش.  < br /> در آینده برای شمارش تعداد هش ها بهتر است از جدول هش unordered_map استفاده کنید که در C++ 11 نیز آمده است. می توانید در دوره آموزشی ساختارهای داده پویا -> آرایه های انجمنی: نقشه.

نمونه ای از گرفتن هش از رشته "test":

ایجاد شد
hash<string> hash_fn;
size_t str_hash = hash_fn("تست" )؛
cout<<str_hash;


نتیجه این خواهد بود: "2949673445"، بنابراین از هر رشته منحصر به فرد می توانید یک هش منحصر به فرد دریافت کنید که می تواند به عنوان کلید در  unordered_map استفاده شود.

هش کردن یک رشته نمایشی از یک رشته به عنوان یک عدد، منحصر به فرد (فرض می کنیم که احتمال برخورد ناچیز است) برای هر رشته است. این به شما اجازه می دهد تا هر داده مهم (مانند رمزهای عبور) را در پایگاه داده نه به عنوان رشته، بلکه به عنوان اعداد ذخیره کنید. این به شما امکان می دهد تا در صورت دسترسی مهاجم به پایگاه داده رمز عبور، از رمزهای عبور محافظت کنید، زیرا او رمزهای عبور خود را دریافت نمی کند، بلکه فقط نمایش عددی آنها را دریافت می کند و تقریباً غیرممکن است که یک رشته را با هش آن به دست آورید (به ویژه بدون دانستن الگوریتم هش). ). 
هش‌های چندجمله‌ای اغلب در مسائل مسابقه برنامه‌نویسی استفاده می‌شوند.
یکی از بهترین راه ها برای تعیین تابع هش رشته S به شرح زیر است:
h(S)  =  S[0]  +  S[1] * P  +  S[2] * P^2  +  S[3] * P^3  +  ...  +  S[N] * P^N