Если исходный массив не изменяется и предполагается наличие доступного расширения g++
для hash_map
:
hash_map<int, int> distinct_elems;
for (int i = 0 ; i < num_elems ; ++i)
{
distinct_elems[i] = i;
}
Поскольку базовые данные не меняются, distinct_elems
также не изменится, поэтому код:
hash_map<int, int>::iterator de_itr;
for( de_itr = distinct_elems.begin() ; de_itr != distinct_elems.end() ; ++de_itr)
{
print("%d\n", de_itr->second);
}
или, если вы просто хотите посмотреть значение в хэш-карте:
hash_map<int, int>::iterator de_itr = distinct_elems.find(value);
if(de_itr != distinct_elems.end())
{
<do some work>
}
Вы можете сделать это из любого количества потоков без блокировки, поскольку данные теперь в основном постоянны.