Как обрабатывать элементы в векторе списков - PullRequest
0 голосов
/ 23 апреля 2020

Мое задание реализует таблицу строк ha sh, и я не понимаю некоторые ее части.

В задаче я создаю класс с именем set:

class set
{

   size_t set_size;           // Total number of elements.

   double max_load_factor;
   std::vector< std::list< std::string >> buckets;

   std::hash< std::string > hash; 
   std::equal_to< std::string > eq;

   ...

для таблицы. Я использую вектор списков из STL: std :: vector > buckets

Основной задачей является реализация функций, которые помогают правильно создать таблицу строк ha sh и измерить производительность программы.

Проблема, с которой я столкнулся, заключается в том, что я не знаю, как реализовать функцию simple_insert:

bool simp_insert( const std::string& s );
      // Returns true if the insertion took place.
      // simp_insert is called 'simple', because it does not rehash.

Я не понимаю, как найти элемент в векторе списков, кроме того [] работает в векторе, как в массиве ( buckets [1] равно array [1] )?

for( buckets[hash_index] :: iterator it = buckets[hash_index]. begin( ); it != buckets[hash_index]. end( ); ++ it )
{
     if(*it == s){
       return false;
     } 
}

Здесь я хочу сравнить строки, и если они уже есть в списке, они должны вернуть false, и вся функция останавливается. Но я не уверен в точности этого кода

...