Я хотел бы знать сложность нотации Big O классов мультимножества STL, карт и хэш-карт, когда:
- вставка записей
- доступ к записям
- получение записей
- сравнение записей
Я хотел бы знать сложность нотации Big O классов мультимножества STL, карт и хэш-карт, когда:
Они реализованы с использованием красно-черного дерева, типа сбалансированное бинарное дерево поиска. Они имеют следующие асимптотические времена выполнения:
Вставка: O(log n)
Поиск: O(log n)
Удаление: O(log n)
Они реализованы с помощью хеш-таблиц. Они имеют следующие сроки выполнения:
Вставка: O(1) ожидается, O(n) в худшем случае
Поиск: O(1) ожидается, O(n) в худшем случае
Удаление: O(1) ожидается, O(n) в худшем случае
Если вы используете правильную хэш-функцию, вы почти никогда не увидите поведение в худшем случае, но об этом следует помнить — см. Отказ в обслуживании с помощью атак алгоритмической сложности Кросби и Уоллаха в качестве примера.
hash_*
, относится к неупорядоченным контейнерам С++ 11 и контейнерам Boost.Unordered?
- person myWallJSON; 11.12.2011
hash_*
являются частью Silicon Graphics STL. Они были включены в версию C++11 под именами unordered_*
(unordered_map, unordered_set и т. д.). Кроме того, они были включены в библиотеки libstdc++, Visual C++ и Boost C++.
- person milpita; 20.09.2016