Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Comparison with Associative Containers

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 41. Boost.Unordered

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Table 41.4. Interface differences.

Ассоциативные контейнеры

Неупорядоченные ассоциативные контейнеры

Параметризованное упорядоченным отношением<Compare>

Parameterized by a function object Hash and an equivalence relation Pred

Keys can be compared using key_compare which is accessed by member function key_comp(), values can be compared using value_compare which is accessed by member function value_comp().

Ключи могут быть хешированы с использованием<hasher>, доступ к которому осуществляется функцией<hash_function()>, и проверены на равенство с использованием<key_equal>, доступ к которому осуществляется функцией<key_eq()>. Не существует функционального объекта для сравнения или хеширования значений.

Конструкторы имеют дополнительные параметры для объекта сравнения.

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

Keys k1, k2 are considered equivalent if !Compare(k1, k2) && !Compare(k2, k1)

Keys k1, k2 are considered equivalent if Pred(k1, k2)

Member function lower_bound(k) and upper_bound(k)

Никакого эквивалента. Если бы они не были упорядочены<lower_bound>и<upper_bound>, это было бы бессмысленно.

equal_range(k) returns an empty range at the position that k would be inserted if k isn't present in the container.

<equal_range(k)>возвращает диапазон в конце контейнера, если k не присутствует в контейнере. Он не может вернуть позиционированный диапазон, поскольку k может быть вставлен в несколько мест. Чтобы узнать, какое ведро будет вставлено в использование<bucket(k)>. Но помните, что вставка может привести к перетасовке контейнера - это означает, что элемент может быть вставлен в другое ведро.

iterator, const_iterator are of the bidirectional category.

iterator, const_iterator are of at least the forward category.

Iterators, pointers and references to the container's elements are never invalidated.

Итераторы могут быть признаны недействительными с помощью вызовов для вставки или перетасовки. Указатели и ссылки на элементы контейнера никогда не считаются недействительными.

Iterators iterate through the container in the order defined by the comparison object.

Iterators iterate through the container in an arbitrary order, that can change as elements are inserted. Although, equivalent elements are always adjacent.

Нет эквивалента

Местные итераторы могут использоваться для итерации через отдельные ведра. (Порядок локальных итераторов и итераторов не требует наличия корреспонденции.)

Можно сравнить с использованием операторов<==>,<!=>,<<>,<<=>,<>>,<>=>.

Можно сравнить с использованием операторов<==>и<!=>.

When inserting with a hint, implementations are permitted to ignore the hint.

erase never throws an exception

The containers' hash or predicate function can throw exceptions from erase


Table 41.5. Complexity Guarantees

Операция

Ассоциативные контейнеры

Неупорядоченные ассоциативные контейнеры

Строительство пустого контейнера

постоянная

On, гдеn— минимальное количество ведер.

Construction of container from a range of N elements

ONlogN, ON, если диапазон отсортирован<value_comp()>

Average case O(N), worst case O(N2)

Включить один элемент

logarithmic

Average case constant, worst case linear

Вставить один элемент с подсказкой

Амортизированная константа, если t элементов вставлены сразу после подсказки, логарифмическая иначе

Средний случай постоянен, наихудший случай линейный (т.е. такой же, как нормальная вставка).

Включить диапазонNэлементов

N log(size()+N)

Average case O(N), worst case O(N * size())

Стирать ключом<k>

O(log(<size()>) +<count(k)>)

Средний случай: О (91), Худший случай: О (92)

Стереть один элемент итератором

Amortized constant

Average case: O(1), Worst case: O(size())

Erase a range of N elements

O(log<size()>) +N

Средний случай: ON, худший случай: O<size()>

Очистка контейнера

О<size()>

О<size()>

Find

logarithmic

Average case: O(1), Worst case: O(size())

Граф

O(log(<size()>) +<count(k)>)

Average case: O(1), Worst case: O(size())

<equal_range(k)>

logarithmic

Средний случай: О (91), Худший случай: О (92)

<lower_bound>,<upper_bound>

logarithmic

n/a



PrevUpHomeNext

Статья Comparison with Associative Containers раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 41. Boost.Unordered может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 41. Boost.Unordered ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:22:06/0.0070359706878662/0