Hash — различия между версиями
Korvin (обсуждение | вклад) (Новая: Класс <tt>hash</tt> представляет из себя контейнер реализованный на основе хеш массива. Информация в хешах ...) |
Korvin (обсуждение | вклад) м (→find) |
||
Строка 71: | Строка 71: | ||
'''Возвращает''': <tt>[[hash_iterator]]</tt> <br> | '''Возвращает''': <tt>[[hash_iterator]]</tt> <br> | ||
− | Метод осуществляет поиск переданного ключа в хеше. Возвращает итератор, установленный на соответствующее значение, либо на конец хеша (специтератор [[#end|end]]), если такой ключ не найден. | + | Метод осуществляет поиск переданного ключа в хеше. Возвращает итератор, установленный на соответствующее значение, либо на конец хеша (специтератор <tt>[[#end|end]]</tt>), если такой ключ не найден. |
== erase == | == erase == |
Текущая версия на 14:35, 19 апреля 2008
Класс 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 пройдет все возможные пары, хранящиеся в хеше.