Per risolverlo è conveniente utilizzare una funzione hash che restituisce un valore univoco per ogni riga (hash).
C++11 ha una funzione integrata per ottenere un hash: hash.
In futuro, per contare il numero di hash, è meglio utilizzare la tabella hash unordered_map, che è apparsa anche in C++ 11. Puoi saperne di più sull'utilizzo di map nel corso Dynamic data structure -> Array associativi: map.
Un esempio di come ottenere un hash dalla stringa "test":
hash<stringa> hash_fn;
size_t str_hash = hash_fn("test" );
cout<<str_hash;
Il risultato sarà: "2949673445", quindi da ogni stringa univoca puoi ottenere un hash univoco che può essere utilizzato come chiave nella unordered_map.