Para resolvê-lo, é conveniente usar uma função hash que retorna um valor único para cada linha (hash).
C++11 tem um recurso interno para obter um hash: hash. < br />
No futuro, para contar o número de hashes, é melhor usar a tabela de hash unordered_map, que também apareceu no C++ 11. Você pode aprender mais sobre como usar o mapa no curso Estruturas de dados dinâmicos -> Arrays associativos: map.
Um exemplo de como obter um hash da string "test":
hash<string> hash_fn;
size_t str_hash = hash_fn("teste" );
cout<<str_hash;
O resultado será: "2949673445", portanto, de cada string exclusiva, você pode obter um hash exclusivo que pode ser usado como uma chave no mapa unordered_map.