Мое задание реализует таблицу строк 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, и вся функция останавливается. Но я не уверен в точности этого кода