これを解決するには、行ごとに一意の値(ハッシュ)を返すハッシュ関数を使うと便利です
。 C++11 には、ハッシュを取得する機能が組み込まれています: ハッシュ。  < br /> 将来的には、ハッシュの数をカウントするには、C++ 11 にも登場した unowned_map ハッシュ テーブルを使用することをお勧めします。 コースの動的データ構造 -> でマップの使用方法について詳しく学ぶことができます。連想配列: マップ

文字列「test」からハッシュを取得する例:

ハッシュ<文字列> hash_fn;
size_t str_hash = hash_fn("test" );
cout<<str_hash;



結果は「2949673445」となるため、それぞれの一意の文字列から、unowned_map のキーとして使用できる一意のハッシュを取得できます。

文字列のハッシュ化は、文字列ごとに一意の数値として文字列を表現することです (衝突の可能性は無視できると仮定します)。これにより、重要なデータ (パスワードなど) を文字列ではなく数値としてデータベースに保存できます。これにより、攻撃者がパスワード データベースにアクセスした場合にパスワードを保護できます。攻撃者はパスワード自体を取得するのではなく、数値表現のみを取得し、ハッシュによって文字列を取得することはほとんど不可能であるためです (特にハッシュ アルゴリズムを知らなければ)。 ). 
多項式ハッシュは、プログラミング競技の問題で最もよく使用されます。
文字列 S のハッシュ関数を決定する最良の方法の 1 つは次のとおりです。
h(S)  =  S[0]  +  S[1] * P  +  S[2] * P^2  +  S[3] * P^3  +  ...  +  S[N] * P^N