Hash

Материал из Deeptown Manual
Перейти к: навигация, поиск

Класс hash представляет из себя контейнер реализованный на основе хеш массива. Информация в хешах хранится в виде пар ключ-значение, где и ключ и значение представляются произвольными объектами. Хеш позволяет производить поиск значения по ключу за линейное время. При добавлении элементов в такой контейнер, первоначальная очередность элементов теряется, однако существует возможность перебора всех наличествующих элементов с помощью итератора hash_iterator.


Родители: Object
Методы: at replace empty size clear insert find erase erase_key begin end
Реализует операторы: индексного доступа, присваивания


индексные операторы

operator [] (ключ)
at(ключ)
Возвращает: Object или null

Оператор индексного чтения служит для получения объекта расположенного по указанному ключу. Если указан ключ, не существующий в таблице, будет возвращен null.


operator []= (ключ, значение)
replace(ключ, значение)
Возвращает: текущий объект

Оператор индексной записи, напротив, служит для записи объекта по соответствующему индексу. Если переданный ключ уже существует, то старое значение будет заменено новым.

Примечание: см. копирование в контейнерах.

empty

Возвращает: логическое значение

Метод возвращает истину, если хеш непуст.

size

Возвращает: int

Метод возвращает текущее количество пар ключ-значение в хеше.

clear

Возвращает: текущий объект

Очищает хеш от содержимого. После этого размер считается нулевым.

insert

insert(ключ, значение)
Возвращает: текущий объект

Метод добавляет переданнцю пару ключ-значение в хеш.

Примечание: см. копирование в контейнерах.

find

find(ключ)
Возвращает: hash_iterator

Метод осуществляет поиск переданного ключа в хеше. Возвращает итератор, установленный на соответствующее значение, либо на конец хеша (специтератор end), если такой ключ не найден.

erase

erase(удаляемая пара: hash_iterator)
Возвращает: текущий объект

Данный метод удаляет из хеша пару ключ-значение, на которую указывает переданный итератор.

erase_key

erase_key(ключ)
Возвращает: текущий объект

Данный метод удаляет из хеша ключ и значение, соответствующее данному ключу.

begin

Возвращает: hash_iterator

Метод создает и возвращает итератор, установленный на "первую" пару ключ-значение в хеше.

Примечание: Здесь, понятие "первая пара" не означает "первая добавленная пара", поскольку при добавлении записей в хеш, информация об очередности добавления элементов теряется. Если вам требуется запоминать очередность добавления значений в хеш, это необходимо сделать отдельно, например хранить во внешней переменной список ключей, обновляя его в момент записи в хеш.

end

Возвращает: hash_iterator

Метод создает и возвращает итератор установленный на "конец" хеша. Данный итератор не указывает на действительную запись в хеше, а служит лишь для специальных целей. Например, такой пустой итератор возвращает метод find, если переданный ему ключ не был найден. Другое применение этого итератора — обеспечение возможности прохода по всем элементам хеша. Реализуется это примерно так: <source lang=kpp> var h = { :a => 1, :b => 2, :c => 3 }; for (var i = h.begin; i != h.end; ++i)

   //работаем с элементами хеша

</source>

В приведенном выше примере, итерации осуществляются до тех пор, пока текущий итератор не станет равен итератору конца. Таким образом, итератор i пройдет все возможные пары, хранящиеся в хеше.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
информация
документация
Инструменты