Попередня умова: std::map , std::unordered_map
Що стосується ефективності, існує величезна різниця між картами та невпорядкованими картами.
Ми повинні знати внутрішню роботу обох, щоб вирішити, який з них використовувати.
Різниця:
| map | unordered_map --------------------------------------------------------- Ordering | increasing order | no ordering | of keys(by default) | Implementation | Self balancing BST | Hash Table | like Red-Black Tree | search time | log(n) | O(1) ->Середній | | O(n) -> Час вставки в найгіршому випадку | log(n) + Rebalance | Те саме, що пошук Час видалення | log(n) + Rebalance | Те саме, що пошук>
Використовуйте std::map, коли
- Вам потрібні впорядковані дані.
- Вам потрібно буде роздрукувати/отримати доступ до даних (у відсортованому порядку).
- Вам потрібен попередник/наступник елементів.
- Перегляньте переваги BST перед Hash Table для інших випадків.
CPP
javascript оператор if
// CPP program to demonstrate use of std::map> #include> int> main()> {> >// Ordered map> >std::map<>int>,>int>>порядок;> >// Mapping values to keys> >order[5] = 10;> >order[3] = 500;> >order[20] = 100;> >order[1] = 1;> >// Iterating the map and> >// printing ordered values> >for> (>auto> i = order.begin(); i> >!= order.end(); i++) {> >std::cout << ' : ' '
'; } }> |
>
поліморфізм java
>Вихід
1 : 1 3 : 500 5 : 10 20 : 100>
Використовуйте std::unordered_map, коли
набір C++
- Вам потрібно вести підрахунок деяких даних (приклад – рядки), і впорядкування не потрібне.
- Вам потрібен доступ до одного елемента, тобто без обходу.
CPP
формат рядка java
// CPP program to demonstrate use of> // std::unordered_map> #include> int> main()> {> >// Unordered map> >std::unordered_map<>int>,>int>>порядок;> >// Mapping values to keys> >order[5] = 10;> >order[3] = 500;> >order[20] = 100;> >order[1] = 1;> >// Iterating the map and> >// printing unordered values> >for> (>auto> i = order.begin();> >i != order.end(); i++)> >{> >std::cout << ' : ' '
'; } }> |
>
>Вихід
1 : 1 20 : 100 3 : 500 5 : 10>
Розглянемо відмінності у вигляді таблиці -:
| карта | unordered_map | |
| 1. | карту визначено у файлі заголовка #include | unordered_map визначено у файлі заголовка #include |
| 2. | Його реалізує червоно-чорне дерево . | Це реалізовано за допомогою хеш-таблиці. |
| 3. | Це повільно. | Це швидко. |
| 4. | Часова складність для операцій є O(log N) | Часова складність операцій становить O(1) |
| 5. | map використовується для зберігання елементів як пар ключів і значень у порядку, відсортованих за ключем. | unordered_map використовується для зберігання елементів як пар ключ-значення в несортованому порядку. |