Хэш-таблица в C++

Hes Tablica V C



Хэш-таблица также известна в программировании под словом «карта Hasp». В языке программирования C++ хеш-таблицы по своей сути представляют собой структуру данных, которая в основном используется для хранения ключей массива и их значений в парах. Для вычисления индекса в массиве слотов, где хранятся значения, необходимо использовать хэш-алгоритм, и каждый ключ должен быть уникальным. Хеш-таблица используется для добавления, удаления и извлечения элементов на основе их различных значений. В этой статье мы поймем концепцию хеш-таблицы с помощью соответствующих примеров.

Хэш-функция

В этом разделе мы обсудим хэш-функцию, которая помогает выполнить хэш-код соответствующего ключа элемента данных в структуре данных, как указано ниже:

Целочисленный хеш-элемент ( интервал ключ )
{
возвращаться ключ % размер стола ;
}

Процесс выполнения индекса массива называется хешированием. Иногда один и тот же тип кода выполняется для создания одного и того же индекса с использованием одних и тех же ключей, называемых коллизиями, которые обрабатываются с помощью различных цепочек (создание связанного списка) и реализации стратегий открытой адресации.







Работа хеш-таблицы в C++

Указатели на реальные значения хранятся в хеш-таблице. Он использует ключ для поиска индекса массива, в котором значения ключей должны быть сохранены в нужном месте массива. Мы взяли хеш-таблицу размером 10, как указано ниже:



0 1 2 3 4 5 6 7 8 9

Давайте случайным образом возьмем любые данные по разным ключам и сохраним эти ключи в хеш-таблице, просто рассчитав индекс. Итак, данные хранятся по ключам в вычисляемом индексе с помощью хеш-функции. Предположим, мы берем данные = {14,25,42,55,63,84} и ключи =[ 15,9,5,25,66,75 ].



Рассчитайте индекс этих данных, используя хэш-функцию. Значение индекса упоминается в следующем:





Ключ пятнадцать 9 29 43 66 71
Рассчитать индекс 15%10 = 5 9%10=0 29%10=9 43%10=3 66%10=6 71%10=1
Данные 14 25 42 55 63 84

После создания индекса массива поместите данные по ключу точного индекса данного массива, как описано ранее.

25 84 55 14 63 42
0 1 2 3 4 5 6 7 8 9

После этого мы видим, что коллизия возникает, если два или более ключей имеют одинаковый хеш-код, что приводит к одинаковому индексу элементов массива. У нас есть одно решение, позволяющее избежать коллизий: выбор хорошего метода хеширования и реализация точных стратегий.



Теперь давайте обсудим различные методы реализации на соответствующих примерах.

Пример. Добавление данных в хеш-таблицу с использованием метода открытого хеширования

В этом примере мы используем такой метод реализации, как открытое хеширование, чтобы избежать коллизий в хеш-таблице. При открытом хешировании или цепочке мы создаем связанный список для связывания значений хеш-таблицы. Ниже прилагается фрагмент кода этого примера, описывающий метод открытого хеширования:

#include
#include <список>
сорт Хеш-таблица {
частный :
статический константа интервал размер таблицы '=' 10 ;
стандартный :: список < интервал > таблицаИмеет [ размер таблицы ] ;
интервал hashFunc ( интервал ключ ) {
возвращаться ключ % размер таблицы ;
}
общественный :
пустота вставлять ( интервал ключ ) {
интервал индекс '=' hashFunc ( ключ ) ;
таблицаИмеет [ индекс ] . отталкивать ( ключ ) ;
}
пустота просмотртаблицы ( ) {
для ( интервал я '=' 0 ; я < размер таблицы ; ++ я ) {
стандартный :: расчет << '[' << я << ']' ;
для ( авто это '=' таблицаИмеет [ я ] . начинать ( ) ; это ! '=' таблицаИмеет [ я ] . конец ( ) ; ++ это ) {
стандартный :: расчет << ' -> ' << * это ;
}
стандартный :: расчет << стандартный :: конец ;
}
}
} ;
интервал основной ( ) {
Хэштаблица ;
имееттаблицу. вставлять ( пятнадцать ) ;
имееттаблицу. вставлять ( 33 ) ;
имееттаблицу. вставлять ( 23 ) ;
имееттаблицу. вставлять ( 65 ) ;
имееттаблицу. вставлять ( 3 ) ;
имееттаблицу. просмотртаблицы ( ) ;
возвращаться 0 ;
}

Это очень интересный пример: мы строим связанный список и вставляем данные в хеш-таблицу. Прежде всего, мы определяем библиотеки в начале программы. < список > библиотека используется для реализации связанного списка. После этого мы создаем класс с именем «HashTable» и создаем частные атрибуты класса, такие как размер таблицы и массив таблицы, используя ключевое слово «private:». Помните, что частные атрибуты нельзя использовать вне класса. Здесь мы принимаем размер таблицы равным «10». Используя это, мы инициализируем хеш-метод и вычисляем индекс хеш-таблицы. В хеш-функцию мы передаем ключ и размер хеш-таблицы.

Мы создаем несколько необходимых функций и делаем эти функции общедоступными в классе. Помните, что публичные функции можно использовать вне класса где угодно. Мы используем ключевое слово «public:», чтобы начать публичную часть класса. . Поскольку мы хотим добавить новые элементы в хеш-таблицу, мы создаем функцию с именем «InsertHash» с ключом в качестве аргумента функции. В функции «insert» мы инициализируем индексную переменную. Мы передаем хеш-функцию индексной переменной. После этого передайте индексную переменную в связанный список tableHas[], используя метод «push», чтобы вставить элемент в таблицу.

После этого мы создаем функцию viewHashTab для отображения хэш-таблицы и просмотра вновь вставленных данных. В этой функции мы используем цикл «for», который ищет значения до конца хеш-таблицы. Убедитесь, что значения хранятся по тому же индексу, который разработан с использованием хэш-функции. В цикле мы передаем значения по соответствующему индексу и завершаем здесь класс. В функции «main» мы берем объект класса с именем hasTable. С помощью этого объекта класса мы можем получить доступ к методу вставки, передав ключ в методе. Ключ, который мы передали в функцию «main», вычисляется в функции «insert», которая возвращает позицию индекса в хеш-таблице. Мы отобразили хеш-таблицу, вызвав функцию «представление» с помощью объекта «Класс».

Вывод этого кода прилагается следующим образом:

Как мы видим, хеш-таблица успешно создается с использованием связанного списка в C++. Открытая цепочка используется, чтобы избежать конфликта одного и того же индекса.

Заключение

В конечном итоге мы пришли к выводу, что хеш-таблица — это наиболее новый метод хранения и получения ключей с парами значений для эффективной обработки огромных объемов данных. Вероятность коллизий в хеш-таблице очень высока, что приводит к уничтожению данных и их хранилища. Мы можем преодолеть это столкновение, используя различные методы управления хеш-таблицей. Разработав хеш-таблицу на C++, разработчики могут повысить производительность, используя наиболее подходящий метод хранения данных в хеш-таблице. Мы надеемся, что эта статья поможет вам понять хеш-таблицу.